问题标签 [sql-optimization]

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 回答
295 浏览

mysql - MySQL不使用多列索引

我对 where 子句中的列进行查询,这些列是主键的一部分,并且在所有列上都有外键索引。

我还在 ( c_id, tg_id, dt_id) 上定义了多个列索引,但 EXPLAIN 显示它正在使用外键索引c_id

agg_ei_comdm_fk_idx 是外键索引,comp_uuid 是 ( , , )c_id上的多列索引c_idtg_iddt_id

有人可以解释为什么会这样吗

编辑:创建表

0 投票
1 回答
253 浏览

mysql - MySQL:有效地将事件日志转换为时间序列

我有一张记录感兴趣事件的开始时间和结束时间的表格:

我正在寻找一种创建“时间序列”表的方法,其中一列是时间索引,另一列是当时正在进行的事件计数。我可以使用子查询和生成器来做到这一点:

有没有更有效的方法来做到这一点?此方法要求每个时间索引都有一个子查询。例如,是否有一种方法需要每个“event_log”记录一个子查询?我真正的问题是 500k 时间索引条目和 1k 事件;这比我想要的要长一点(大约 90 秒)。

“生成器”片段来自http://use-the-index-luke.com/blog/2011-07-30/mysql-row-generator。显然,较大的问题需要使用较大的生成器之一,例如 64k 版本或 1M 版本。

0 投票
4 回答
530 浏览

sql - 优化棘手的 SQL 搜索查询

我正在尝试针对以下问题提出一个简单、高效的查询:

假设有几个实体(项目)都有一个唯一的 ID。实体具有一组可变的属性(属性),因此已移至单独的表中:

现在我想搜索一个匹配某些指定搜索条件的项目,如下所示:

如果我有一张像Items(Id, Prop_1, Prop_2, ..., Prop_n). 然后我可以做一个简单SELECT的搜索条件可以简单地(甚至以编程方式)插入 - 子句的地方WHERE,但在这种情况下,我必须做类似的事情:

有没有更好/更简单/更快的方法来做到这一点?

0 投票
2 回答
868 浏览

sql - 执行的 SQL 视图中没有选择的列?

我无法想出正确的关键字来搜索这个问题的答案,所以如果它已经得到回答,我们深表歉意。

考虑以下 SQL 视图:

如果我运行以下查询,将执行子查询还是 SQL Server 优化查询?

我从性能的角度来看这个,比如说,如果视图有很多子查询(如果内部选择引用一个大表,聚合可能需要很长时间)。

我正在使用 SQL Server 2008 R2,但我很想知道 2012 年或 MySQL 的答案是否不同。

谢谢。

0 投票
2 回答
116 浏览

mysql - MySQL: Shouldnt using a routine to find a match be much faster in this example?

This query takes 0.0002 secs to execute:

locID is obviously an INDEX.

This other query uses a routine, and takes 0.0005 secs to execute (it returns 30296):

Then, why does this combined query take 1.7912 secs to execute? Seems way more than it should be:

Just in case you find this useful, these are the tables and the routine:

0 投票
2 回答
3559 浏览

mysql - 替代 GROUP BY 以优化 SQL 调用

我有以下非常慢的 SQL 语句。它从 600-800 毫秒不等!

我正在寻找优化它的可能方法,但不确定最佳路线。我的数据库相当大,entries表有 400,000 行,devices表有 90,000 行。


SQL 语句

这个 SQL 语句慢是因为我在较差的硬件上运行它,还是因为语句不好,或者我没有正确构建表?任何想法将不胜感激!


声明的目标

获取所有设备制造商的列表,以及该制造商在条目表中出现的次数的相关计数。


表结构

设备

参赛作品


另外——我一直在研究备用数据库。考虑到这个数据库将来需要非常快速的读/写,像 Redis 这样的东西有用吗?

0 投票
1 回答
1176 浏览

mysql - MySQL log-queries-not-using-indexes 和 UNION 误报或错误?

使用以下参数激活慢查询日志:

现在似乎 MySQL 只记录没有索引的查询

这是一个日志样本

但是,此查询已优化。

我在 MySQL 文档中看到了这个警告:

但...

  1. 我不明白记录的查询是否正确,或者我有可以修复的优化问题
  2. 万一这个查询是误报,有没有办法避免那个mysql日志呢?

似乎 MySQL 将所有包含 UNION 的查询都记录为无索引查询,我对其进行了搜索,但什么也没找到。

有什么想法吗?感谢提前米歇尔

0 投票
1 回答
4763 浏览

mysql - 使用 FInd_IN_SET vs IN 子句 MYSQL 存储过程

我有一个类似于下面的存储过程

Tag是一个Integer专栏。

我厌倦了将逗号分隔的值作为字符串传递到存储过程中,但它不起作用。然后我使用如下存储过程

这很好用,唯一的问题是我的表非常大 - 与运行直接 SQL 语句时的 IN 相比,数百万行和使用 FIND_IN_SET 花费的时间太长。

最好的性能优化选项是什么?

是否有一个拆分函数可以将 id 转换为整数并为 IN 子句解析它?我认为那将是最好的选择。有什么建议或想法吗?

0 投票
5 回答
904 浏览

sql-server - SQL Server 查询优化?

我有以下查询:

...令我惊讶的是,它不会在可接受的时间内返回结果。我第一次在生产环境中运行它,就像执行了 3 秒。现在,它一直运行到超时(在 C# 应用程序内,30 秒)。
主要目的是:“向我提供任何跟踪器的最新位置以及有关其用户设备的信息,向后看 2 分钟”。
有关优化此查询的任何提示?

谢谢!

索引: Anywhere but where 子句列(ReceivedTime、OSType、Notify)。

关于执行计划,这是一件大事,我不太熟悉。我应该把它贴在这里吗?:)

0 投票
1 回答
581 浏览

sql - 对查询的单一更改,大大增加了执行时间

我有一个看起来像这样的查询:

此查询需要 5 秒才能执行。但是,如果我将行更改AND ta1.SGBSTDN_RESD_CODE = 'R'AND ta1.SGBSTDN_RESD_CODE = 'N',则执行时间将增加到 1 小时 45 分钟。'N' 也是 SGBSTDN_RESD_CODE 中的一个有效值,如果有的话,'N' 值应该少于 'R' 值。

数据库是甲骨文。有谁知道为什么会发生这种行为?

编辑:解释计划似乎是相同的。

使用“R”:计划

使用“N”计划