问题标签 [explain]
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 - 了解 EXPLAIN 语句的输出 (MySQL)
我有一个查询返回以下说明:
这是否表明查询到处都在使用索引,还是可以通过添加其他索引来改进?基于此:http ://dev.mysql.com/doc/refman/5.1/en/explain-output.html ,它提到该key
列显示实际使用的索引。我对每一列都有一个索引。
有问题的查询如下:
表有大约 140,000 条记录。此查询需要 3 秒执行,并返回 135,725 作为结果。
sql - 解释分析中嵌套反循环的成本
我通过解释分析得到以下输出:
我不明白为什么循环反连接成本为 36.92。
在其他站点中,我看到了循环的公式:上部扫描成本 + 上部行 * 内部成本。
但我的成本是 36.92,所以没办法。dbmanager 如何解决此查询?
mysql - 为什么“解释”命令在同一个 SQL 语句上产生不同的结果?
我将 MySQL 数据库从一个环境迁移到另一个环境,并发现迁移后,特定查询的运行速度比原来慢得多。
我正在调查带有“解释”关键字(如下)的语句,发现“解释”命令在不同的服务器上给出了不同的输出。
对于原始版本,它给出:
同样的语句在新环境中产生不同的输出:
mysql - MySQL EXPLAIN 语句在类型上显示 ALL
我有一个快速且非常简单的问题。
我有一个带有以下 SQL 的表:
当我尝试运行如下 EXPLAIN 语句时:
我收到的结果表明我有一个type = ALL
.
但是,当我尝试运行 EXPLAIN 语句时:
我收到的结果表明我有一个type = REF
.
我想我的问题是为什么第一个查询显示 ALL 而第二个查询显示 REF。
如果有人能对此有所了解,将不胜感激!谢谢!!
mysql - 索引未显示为可能的键
我有几个查询,我为它们创建了 2 个单独的索引,我知道目前它并不需要使用它们,因为表不包含那么多行;但是,possible key
当我使用EXPLAIN
.
一个示例查询是:
备用查询只是在状态之前添加了另一个AND
子句,例如:
现在,我添加了以下两个索引:
但是,MySQL 仅将以下索引显示为可能的键:
我的索引错了吗!?为什么这样做?
mysql - mysql - OR 运算符不使用索引
我有一个简单的邀请表:
我想选择邀请人 70 对被邀请人 62 的邀请,反之亦然:
但是这个查询是 ALL 类型的,并且不使用受邀者_邀请者_idx。请告诉我这里有什么问题?
谢谢!
==EDIT== 抱歉,我对架构有误,它还有一个字段:request_ts。这次查询计划是 ALL。
这是我的解释结果:
mysql - MySql Explain 忽略特定查询中的唯一索引
我第一次开始深入研究索引,并第一次从用户表开始分析我们的数据库。我搜索了 SO 以找到一个类似的问题,但我猜无法很好地构建我的搜索。
我正在经历一个特定的概念,这第一次观察让我想知道 - 这些解释的区别[区别:第一个查询正在使用'a%'
,而第二个查询正在使用'ab%'
]
[表中的总行数users
= 9193 ]:
(实际上匹配列 = 1240)
(实际上匹配列 = 109)
索引如下所示:
我的问题:
为什么在第一个查询中完全忽略了索引?mySql 是否认为不使用索引是一个更好的主意case 1
?如果是,为什么?
mysql - 如何解释 MySQL EXPLAIN 的输出?
我想从中选择列的text
内容entrytable
。
该表具有三个索引:
- index_user(用户)
- index_datum(基准)
- index_status_mit_spam (status, status_spam_user, status_spam_system)
解释结果是:
possible_keys
MySQL 可能想要使用keys
的索引和 MySQL 实际使用的索引吗?- 为什么
index_status_mit_spam
不使用索引?在查询中,列的顺序与索引中的相同,... - 为什么索引
index_datum
不用于ORDER BY
? - 如何优化我的表索引或查询?(上面的查询最多需要 3 秒,表中有大约一百万个条目)
mysql - MySQL 优化 UNION 查询
我正在尝试优化查询。
我的问题似乎与MySQL、Union ALL 和 LIMIT相似,答案可能相同(恐怕)。但是,在我的情况下,有更严格的限制 (1) 以及日期时间列上的索引。
所以我们开始:
为简单起见,让我们只有一个包含三个列的表:
- md5 (varchar)
- 值(varchar)。
- 最后更新(日期时间)
(md5, updated) 上有一个索引,因此在 md5 键上选择,按更新排序并限制为 1 将得到优化。
搜索应返回最多与 10 个 md5 键之一匹配的记录。键具有优先级。因此,如果有 prio 1 的记录,它将优先于 prio 2、3 等的任何记录。
目前使用 UNION ALL:
它有效,但如果提供 10 个键,UNION 似乎会执行所有 10 个查询。
但是,从业务角度来看,按顺序运行选择并在第一次匹配后停止是可以的。
这可能是普通的 SQL 吗?
或者唯一的选择是存储过程?