问题标签 [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.
mysql - MySQL不使用多列索引
我对 where 子句中的列进行查询,这些列是主键的一部分,并且在所有列上都有外键索引。
我还在 ( c_id
, tg_id
, dt_id
) 上定义了多个列索引,但 EXPLAIN 显示它正在使用外键索引c_id
agg_ei_comdm_fk_idx 是外键索引,comp_uuid 是 ( , , )c_id
上的多列索引c_id
tg_id
dt_id
有人可以解释为什么会这样吗
编辑:创建表
mysql - MySQL:有效地将事件日志转换为时间序列
我有一张记录感兴趣事件的开始时间和结束时间的表格:
我正在寻找一种创建“时间序列”表的方法,其中一列是时间索引,另一列是当时正在进行的事件计数。我可以使用子查询和生成器来做到这一点:
有没有更有效的方法来做到这一点?此方法要求每个时间索引都有一个子查询。例如,是否有一种方法需要每个“event_log”记录一个子查询?我真正的问题是 500k 时间索引条目和 1k 事件;这比我想要的要长一点(大约 90 秒)。
“生成器”片段来自http://use-the-index-luke.com/blog/2011-07-30/mysql-row-generator。显然,较大的问题需要使用较大的生成器之一,例如 64k 版本或 1M 版本。
sql - 优化棘手的 SQL 搜索查询
我正在尝试针对以下问题提出一个简单、高效的查询:
假设有几个实体(项目)都有一个唯一的 ID。实体具有一组可变的属性(属性),因此已移至单独的表中:
现在我想搜索一个匹配某些指定搜索条件的项目,如下所示:
如果我有一张像Items(Id, Prop_1, Prop_2, ..., Prop_n)
. 然后我可以做一个简单SELECT
的搜索条件可以简单地(甚至以编程方式)插入 - 子句的地方WHERE
,但在这种情况下,我必须做类似的事情:
有没有更好/更简单/更快的方法来做到这一点?
sql - 执行的 SQL 视图中没有选择的列?
我无法想出正确的关键字来搜索这个问题的答案,所以如果它已经得到回答,我们深表歉意。
考虑以下 SQL 视图:
如果我运行以下查询,将执行子查询还是 SQL Server 优化查询?
我从性能的角度来看这个,比如说,如果视图有很多子查询(如果内部选择引用一个大表,聚合可能需要很长时间)。
我正在使用 SQL Server 2008 R2,但我很想知道 2012 年或 MySQL 的答案是否不同。
谢谢。
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:
mysql - 替代 GROUP BY 以优化 SQL 调用
我有以下非常慢的 SQL 语句。它从 600-800 毫秒不等!
我正在寻找优化它的可能方法,但不确定最佳路线。我的数据库相当大,entries
表有 400,000 行,devices
表有 90,000 行。
SQL 语句
这个 SQL 语句慢是因为我在较差的硬件上运行它,还是因为语句不好,或者我没有正确构建表?任何想法将不胜感激!
声明的目标
获取所有设备制造商的列表,以及该制造商在条目表中出现的次数的相关计数。
表结构
设备
参赛作品
另外——我一直在研究备用数据库。考虑到这个数据库将来需要非常快速的读/写,像 Redis 这样的东西有用吗?
mysql - MySQL log-queries-not-using-indexes 和 UNION 误报或错误?
使用以下参数激活慢查询日志:
现在似乎 MySQL 只记录没有索引的查询
这是一个日志样本
但是,此查询已优化。
我在 MySQL 文档中看到了这个警告:
但...
- 我不明白记录的查询是否正确,或者我有可以修复的优化问题
- 万一这个查询是误报,有没有办法避免那个mysql日志呢?
似乎 MySQL 将所有包含 UNION 的查询都记录为无索引查询,我对其进行了搜索,但什么也没找到。
有什么想法吗?感谢提前米歇尔
mysql - 使用 FInd_IN_SET vs IN 子句 MYSQL 存储过程
我有一个类似于下面的存储过程
这Tag
是一个Integer
专栏。
我厌倦了将逗号分隔的值作为字符串传递到存储过程中,但它不起作用。然后我使用如下存储过程
这很好用,唯一的问题是我的表非常大 - 与运行直接 SQL 语句时的 IN 相比,数百万行和使用 FIND_IN_SET 花费的时间太长。
最好的性能优化选项是什么?
是否有一个拆分函数可以将 id 转换为整数并为 IN 子句解析它?我认为那将是最好的选择。有什么建议或想法吗?
sql-server - SQL Server 查询优化?
我有以下查询:
...令我惊讶的是,它不会在可接受的时间内返回结果。我第一次在生产环境中运行它,就像执行了 3 秒。现在,它一直运行到超时(在 C# 应用程序内,30 秒)。
主要目的是:“向我提供任何跟踪器的最新位置以及有关其用户设备的信息,向后看 2 分钟”。
有关优化此查询的任何提示?
谢谢!
索引: Anywhere but where 子句列(ReceivedTime、OSType、Notify)。
关于执行计划,这是一件大事,我不太熟悉。我应该把它贴在这里吗?:)
sql - 对查询的单一更改,大大增加了执行时间
我有一个看起来像这样的查询:
此查询需要 5 秒才能执行。但是,如果我将行更改AND ta1.SGBSTDN_RESD_CODE = 'R'
为AND ta1.SGBSTDN_RESD_CODE = 'N'
,则执行时间将增加到 1 小时 45 分钟。'N' 也是 SGBSTDN_RESD_CODE 中的一个有效值,如果有的话,'N' 值应该少于 'R' 值。
数据库是甲骨文。有谁知道为什么会发生这种行为?
编辑:解释计划似乎是相同的。
使用“R”:计划
使用“N”计划