问题标签 [query-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.

0 投票
2 回答
39 浏览

mysql - 查询调优优化

下面是查询。如何优化此查询?

0 投票
1 回答
119 浏览

sql - SQL Server 中的查询优化

上面的查询在 SQL Server 2014 中需要 12 秒,有什么想法可以调整查询吗?C1、C2、C3 列上有索引。

观察:在上面的查询中,当我从 OR 中删除一个条件时(即

然后它会在 0 秒内返回结果。

每个表有大约 500'000 条记录。

0 投票
2 回答
2445 浏览

sql - Oracle 优化器提示 xmlagg 函数

我有一个函数,它使用一些 xmlaggs 数据调用几个表/视图等。

出于某种原因,当我提取附加信息时,我得到了性能提升,即使这些额外信息没有用于其余代码(例如再次使用的键值的索引)。

我已经在快速和慢速查询上运行了 tkprof,我看到了一些问题 - 第一个是慢速查询在解析和执行期间有遗漏,而快速查询没有。

我的主要问题是,再往下看,我可以看到我的一个视图的成本很高 - 更快的查询使用基础表上的 3 个索引,而慢速查询没有使用任何索引。

我试图插入一个提示:

但是它仍在进行全表扫描。我是否将优化器提示放在错误的位置或为此使用了错误的语法?

编辑-我一直在做更多的调查,看来这可能是Oracle进行哈希联接而不是嵌套循环的敲门声,但是我的选择来自多个表-我可以在所有3个表上强制使用USE_NL吗?我怎么知道 pl/sql 的哪个区域导致了这种情况,因为它被多次调用。

28/08 更新 - 添加了赏金。让我知道是否有任何额外的要求。

更新 01/09 -

有两个注释掉的选择,当任何一个未注释时,它们都会成为执行速度更快的查询。t1 和 t2 根本不在查询中的其他地方使用。

更新 01/09 以下是执行计划:快速http://pastebin.com/pbJMSxrB 慢速http://pastebin.com/zt3eUYNd

这是我希望纠正的第 86 行中的高成本。这可能是此处完整扫描的结果,或者是进一步向上连接的结果。

0 投票
1 回答
94 浏览

mysql - 运行总查询的 MySQL 查询优化 - 如何减少查询执行时间?

问题

我在下面粘贴了一个查询。我面临的问题是如何将延迟减少到当前大约 10 秒的时间。

查询目的

此查询的目的是获取包含日期值的所有记录,并收集属于某个日期的所有记录的运行计数。 日期值在下面的 sqlfiddle 中计算。 它的最终目的是显示在将运行总计作为折线图的图表中。它将向上计数,因此它是一个不断增长的图表。

我在其中显示它的图表称为我所有记录的累积图表(具有日期值的操作项)。

问题描述

我的问题是我在至少 10 秒内得到查询结果。

问题

如何加速和减少查询的延迟,以便我不会停止加载我的图表?

完整的架构和我上面成功运行的查询的一部分

(我很难让主查询在 sqlfiddle 上运行,尽管我可以从我自己的机器上运行它)。

http://sqlfiddle.com/#!9/865ee/11

任何帮助或建议将不胜感激!

编辑

添加了我的类别界面的示例屏幕截图

类别(第一个表)有一个名为 categoryname 的字段,它假定可以扩展或删除 4 个值之一,即 - Team、Department、Source、Project_Phase。

CategoryName(第二个表)有一个名为 categoryvalue 的字段,它是每个类别(第一个表)的实际允许值

示例 - Team 1、Team 2、Team 3 是 categoryname 中的类别值,对应于 Team 的类别。

类别

类别

0 投票
3 回答
880 浏览

sql - 在 select 语句中调整 oracle 子查询

我有一个主表和一个参考表,如下所示。

我的第一个select正确工作的陈述是这个:

但是,为了解决性能问题,我将其更改为以下select语句:

对于AMOUNT2COUNT1列,值保持不变。但是对于AMOUNT1,由于与参考表的连接,该值会成倍增加。

我知道我可以在GROUP_ID. 但这与使用子查询没有什么不同。

知道如何使查询仅使用 1 个左连接而不乘以AMOUNT1值吗?

0 投票
1 回答
664 浏览

postgresql - Postgres 9.4:如何在运行速度慢 10 倍的任何 ARRAY 查找中修复查询计划者对哈希联接的选择

我当然意识到找出这些问题可能很复杂并且需要大量信息,但我希望对于这种特殊情况有一个已知问题或解决方法。我已经缩小了导致次优查询计划的查询更改(这是运行 Postgres 9.4)。

以下查询运行大约 50 毫秒。该tag_device表是一个包含约 200 万个条目的联结表,该devices表有大约 150 万个条目,而标签表有大约 500,000 个条目(注意:实际 IP 值只是虚构的)。

有几点需要注意。 device_ip正在使用 ip4r 模块 ( https://github.com/RhodiumToad/ip4r ) 提供 ip 范围查找,并且此列上有一个 gist 索引。上述查询使用以下查询计划在大约 50 毫秒内运行:

如果我增加正在查找的 ARRAY 中的 IP 地址数量,则查询计划会发生变化并变得非常慢。因此,在查询的快速版本中,数组中有 30 个项目。如果我将其增加到数组中的 80 个项目,则查询计划会发生变化并变得显着变慢(超过 10 倍)查询在所有其他方面保持不变。新的查询计划使用散列连接而不是合并连接和嵌套循环。当数组中有 80 个项目而不是 30 个项目时,这是新的(慢得多)查询计划。

上面带有默认查询计划的查询运行时间约为 500 毫秒(慢了 10 倍以上)。如果我关闭哈希连接,SET enable_hashjoin= OFF;则查询计划将返回使用合并连接,并在大约 50 毫秒内再次运行,数组中有 80 个项目。

同样,这里唯一的变化是正在查找的 ARRAY 中的项目数。

有没有人对为什么规划者做出错误的选择导致大幅放缓有任何想法?

该数据库完全适合内存并位于 SSD 上。

我还想指出我正在使用 CTE,因为我遇到了一个问题,即当我在查询中添加限制时,规划器不会使用 tag_device 表上的索引。基本上这里描述的问题:http: //thebuild.com/blog/2014/11/18/when-limit-attacks/

谢谢!

0 投票
1 回答
135 浏览

mysql - 改进 WordPress 主题中的 MySQL Select 语句

我正在使用 Industrialthemes 的 WordPress 主题引擎,并且看到首页的渲染使用了很多查询,这些查询在我的 MySQL 数据库中运行大约需要 0.4 秒。像这个:

有什么办法可以改进这个查询?据我所知,WordPress 安装为所有涉及的字段设置了默认索引。我在调优 SQL Select 语句方面的知识并不好,所以我希望一些专家能在这方面帮助我。谢谢。

(来自评论)

(之后...)

0 投票
1 回答
19 浏览

performance - 请帮我优化下面提到的脚本,因为同一个表(即 Incident_Audit_log)已多次使用?

0 投票
1 回答
566 浏览

mysql - Mysql 查询占用了太多磁盘空间

我正在尝试在 mysql 上运行以下查询:

huge_table大约 2000 万行和 26 列,但我只需要其中的 5 个来过滤。我认为那 21 个多余的列占用了太多空间(大约 20GB!在 100 秒内)。有什么方法可以只隔离 5 个需要的列,以便使用更少的空间?还是其他不使用联接的形式?

还是有其他原因会消耗这么多空间?

**** 更新 ****

这是原始查询:

他的解释:

0 投票
0 回答
40 浏览

sql - 非常大的表索引

我有 2 个大表(数百万行),具有相似的列(一个暂存,一个主)查询所有大多数列。

所有列都是 VARCHAR(200)

什么是正确的索引策略。覆盖索引不起作用,因为它们主要用于谓词,而不是 Select 。聚集索引可以是 identity ,根本不用。那么具有 4 列的非聚集索引将太大.. 800 字节。