问题标签 [sql-tuning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 嵌套 CASE 的 T-SQL 替代方案以获得更好的性能?
我有一个T-SQL
查询性能非常差,以至于超时。罪魁祸首是这两个带有嵌入式查询的嵌套 CASE 语句:
该CURRENT_BUSINESSDAY
函数的作用正是它所描述的......标识报告期间的当前工作日。
的逻辑CASE
是根据我们在报告周期中的位置以及我们是否收到更新的目标文件来返回目标值。如果还不是 BD8,请检查我们是否收到了新文件(通过比较最大日期)。如果我们收到了,则将该值返回到报告中,否则返回上个月的值。如果它在 BD8 之后并且我们仍然没有新文件,它应该返回“0”,这将使我们的过程失败并让我们知道他们没有按时提供数据。
是否有更有效的方法来编写此逻辑以防止查询超时?请记住,此脚本用于在表格模型中构建表格,因此只有 SELECT 起作用……没有变量声明或任何类似的东西。
想法?
mysql - MySQL查询时间表信息
我在 MySQL 中有一个表,如下所示:
这个表有每个用户的信息(userid
)谁进入工作和离开工作(fecha_ingreso
)。例如,userid=1
在 输入 ( tipo=1
)'2015-06-08 20:00'
并在 离开工作'2015-06-09 05:00'
。
然后我userid=2
有谁tipo=1
在'2015-06-09 23:30'
(夜间)进入()工作,他离开(tipo=2
)工作吃早餐,'2015-06-10 05:00'
他再次进入,'2015-06-10 06:00'
最后他离开了工作'2015-06-10 09:00'
。
我无法进行仅向我显示如下内容的查询:
这是我需要的输出。即使用户可以有几个进出,我也需要显示他的第一次进入日期时间和最后一次退出日期时间,并在附加列中说明他在第二天 22:00 和早上 6 点的范围内工作了多少小时、分钟和秒.
蒂姆,你的查询很完美,但几乎接近了。但是,当用户在下午 22 点之后(如我的示例所示)时,我不知道如何获取小时:分钟:秒。
sql - 需要调整此 sql 查询以提高性能
我有以下查询。由于其中的子查询,这会降低性能。我尝试了很多来添加加入而不是子查询。但徒劳无功。谁能告诉我如何使用 JOIN 重写这个查询?
请看SELECT * FROM table(DBMS_XPLAN.Display);
下面
sql - 需要用 JOIN 替换子查询
我需要在下面使用加入而不是子查询。谁能帮我用JOIN重写这个。
我用我较少的 SQL JOIN 知识尝试了很多。但得到多个错误。任何人都可以帮助我最早的查询。
提前衷心感谢
sql - 性能调优或替换为 distinct 子句
我有一个带有不同子句的查询:
此查询返回 10,146 行,执行时间几乎为 135 秒
对此的解释计划是:
当我从查询中删除 distinct 子句时,它会在 4 秒内执行但 QUERY RETURNS 10163 行,这意味着它也会返回重复的行。
这是没有 distinct 子句的执行计划:
因此,我正在寻找 distinct 子句的任何替代方法来调整此查询。
我的数据库版本是:
Oracle Database 11g 企业版 11.2.0.3.0 - 64 位生产
mysql - 如何设置long_query_time?
我想知道,如何将 long_query_time 设置为 1 分钟。我想要在我的 slow_query_log 中运行超过 1 分钟的查询。怎么做 ?并请提供我如何重新启动 sql ?是命令 MySQL 服务重启吗??
提前致谢。普拉巴卡兰
oracle - Oracle:大幅提升查询性能
我有下一个查询,我正在尝试提高性能:
我跑过并查看了解释计划,总成本是 7388。其中,最昂贵的部分是与journal
表的连接,成本为 6319。
该表有大约 160 万行和 87 个分区,其中只有两个包含这些行(分区 6 有 140 万行,分区 12 有大约 20 万行的其余部分)。
我尝试的第一件事是重新编写查询以避免将实际的 journal_type_id 匹配到 6 时进行全扫描,但我想我的理解是不正确的,因为成本仍然是 7388。
我确实寻找了很多资源,决定我重新编写查询的原因之一就是这个视频。
我仍在积极寻找提高性能的方法,但我想我会在这里提出一个问题以获得一些提示。
我认为视频中的人所说的第一件事是确定哪个是您的“驱动表”(根据键确定选择哪些行的那个),所以我目前正在寻找寻求一种重写查询的方法,以尽可能多地识别和使用该驱动表及其索引。
我不知道我是否走在正确的轨道上,但如果你认为我应该继续前进,请阻止我。另外,请注意,我是性能调优的初学者,实际上这是我的第一次。
任何帮助表示赞赏。
更新:
包含查询中使用的列的一些索引是:
如果您需要查看有关其他表的更多索引或详细信息,请告诉我。
示例说明计划:
mysql - Mysql(Myisam)变量设置
我有一个具有 4GB RAM 和 400MB Mysql 数据库(Myisam)的单处理器专用服务器,但性能问题很大。该数据库由电子商务使用。我已经尝试使用 mysqltuner 脚本对其进行调整,但效果不佳。因为变量设置已经修改了好几次,所以我想从一个基本的配置开始,然后尝试调整它。
sql - 调优 SQL 语句性能
我有两个返回相同结果的查询:
1.
2.:
对我来说奇怪的是,第一个语句在 0.156 秒内完成,而第二个语句在 0.624 秒内完成。需要提一下,所有 ems.* 对象都是视图,我发现基本上 where 子句中的每一列都被索引了。如果需要,我可以放置视图架构,但我宁愿不要,因为是公司信息。也许一双经验的眼睛可能会看到这两种说法的改进
sql - SQL Server 中的查询优化
上面的查询在 SQL Server 2014 中需要 12 秒,有什么想法可以调整查询吗?C1、C2、C3 列上有索引。
观察:在上面的查询中,当我从 OR 中删除一个条件时(即
然后它会在 0 秒内返回结果。
每个表有大约 500'000 条记录。