问题标签 [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.
mysql - 查询调优优化
下面是查询。如何优化此查询?
sql - SQL Server 中的查询优化
上面的查询在 SQL Server 2014 中需要 12 秒,有什么想法可以调整查询吗?C1、C2、C3 列上有索引。
观察:在上面的查询中,当我从 OR 中删除一个条件时(即
然后它会在 0 秒内返回结果。
每个表有大约 500'000 条记录。
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 行中的高成本。这可能是此处完整扫描的结果,或者是进一步向上连接的结果。
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 的类别。
类别
sql - 在 select 语句中调整 oracle 子查询
我有一个主表和一个参考表,如下所示。
我的第一个select
正确工作的陈述是这个:
但是,为了解决性能问题,我将其更改为以下select
语句:
对于AMOUNT2
和COUNT1
列,值保持不变。但是对于AMOUNT1
,由于与参考表的连接,该值会成倍增加。
我知道我可以在GROUP_ID
. 但这与使用子查询没有什么不同。
知道如何使查询仅使用 1 个左连接而不乘以AMOUNT1
值吗?
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/。
谢谢!
mysql - 改进 WordPress 主题中的 MySQL Select 语句
我正在使用 Industrialthemes 的 WordPress 主题引擎,并且看到首页的渲染使用了很多查询,这些查询在我的 MySQL 数据库中运行大约需要 0.4 秒。像这个:
有什么办法可以改进这个查询?据我所知,WordPress 安装为所有涉及的字段设置了默认索引。我在调优 SQL Select 语句方面的知识并不好,所以我希望一些专家能在这方面帮助我。谢谢。
(来自评论)
(之后...)
mysql - Mysql 查询占用了太多磁盘空间
我正在尝试在 mysql 上运行以下查询:
有huge_table
大约 2000 万行和 26 列,但我只需要其中的 5 个来过滤。我认为那 21 个多余的列占用了太多空间(大约 20GB!在 100 秒内)。有什么方法可以只隔离 5 个需要的列,以便使用更少的空间?还是其他不使用联接的形式?
还是有其他原因会消耗这么多空间?
**** 更新 ****
这是原始查询:
他的解释:
sql - 非常大的表索引
我有 2 个大表(数百万行),具有相似的列(一个暂存,一个主)查询所有大多数列。
所有列都是 VARCHAR(200)
什么是正确的索引策略。覆盖索引不起作用,因为它们主要用于谓词,而不是 Select 。聚集索引可以是 identity ,根本不用。那么具有 4 列的非聚集索引将太大.. 800 字节。