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

0 投票
4 回答
11235 浏览

mysql - 为什么“解释”返回的行不等于count()?

我认为“解释 select * from table where relation_title='xxxxxxxxx';” 按索引返回relation_title='xxxxxxxxx' 的行。但它比真正的数字小。

0 投票
4 回答
74869 浏览

sql - 如何使用 DB2 Explain?

如何使用 DB2 的解释功能?-- 既要运行它,又要使用它来优化查询。是否有更好的工具可用于 DB2?

我以前构建过查询,但我必须告诉他们需要多长时间的唯一方法是运行它们并计时——这并不理想。

编辑:对我来说,答案是“你不能。你没有也不能获得访问权。” 你不喜欢官僚主义吗?

0 投票
2 回答
162 浏览

optimization - 优化 MySQL 查询:是否总是可以优化查询以使其不使用“ALL”

根据有关以下内容的 MySQL 文档Optimizing Queries With Explain

* ALL:对先前表中的每个行组合进行全表扫描。如果该表是第一个未标记为 const 的表,这通常不好,并且在所有其他情况下通常非常糟糕。通常,您可以通过添加索引来避免 ALL,这些索引允许基于先前表中的常量值或列值从表中检索行。

这是否意味着可以优化使用 ALL 的任何查询,使其不再进行全表扫描?

换句话说,通过向表中添加正确的索引,是否可以始终避免使用 ALL?或者在某些情况下,无论您添加什么索引,ALL 都是不可避免的?

0 投票
4 回答
458 浏览

mysql - 慢 MySQL 查询

我在 MySQL 中有一个查询(用于存储过程),它按名称和另一个字段进行搜索。当我使用这些搜索参数的不同组合时,我会得到快速的结果(在 1 到 2 秒之间),但对于一些特定的值,我会得到一个需要 9 秒才能在生产网站上返回结果的查询。以下是我从 EXPLAIN 语句中得到的:

名称被声明为 varchar(40),另一个字段是 Unsigned smallint(6)。我在查询中使用的名称 (IX_Name) 的前 15 个字符上使用索引。我可以看到,慢查询会在 EXPLAIN 输出的“行”列中检查大量行。

我不确定我能做些什么来提高性能。上面的 EXPLAIN 输出有什么明显的错误吗?

谢谢,蒂姆

0 投票
3 回答
202 浏览

mysql - 如何在服务器中优化我的 SQL?

我想知道如何优化以下 SQL 以让我的服务器加载更快并降低使用率?

我需要计算美国邮政编码的半径距离以获得结果,例如距特定邮政编码 50 英里(使用纬度和经度计算)并从我的数据库中获取多少其他数据(例如其他邮政编码) .

一旦我得到结果(例如,在距特定邮政编码 50 英里的范围内得到 350 行不同的邮政编码),我需要将它们传递到另一个查询中以计算总行数并以简单的方式显示它,并显示一个结果供我阅读。这是我的查询示例:

希望我没有做错,它显示正确的结果(350 行),但我需要一种优化的方式来运行它,因为这个 SQL 给了我很高的 CPU 使用率来加载。当我对此查询执行 EXPLAIN 时,它显示以下内容:

现在,从上面的解释来看,EXTRA 中的“选择优化掉的表”是一件好事吗?请向我展示一个最完美的优化 SQL 来执行此查询。

0 投票
3 回答
2290 浏览

sql - MySql 和内联选择

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

此选择仅返回一行。内联选择中使用的 id 是索引列(主键)。如果我用这一行返回的 int1/int2 的值替换t.int1and ,查询将在毫秒内完成。t.int2如果我按上述方式执行查询——即引用int1/int2,大约需要10 分钟。当我运行分析器并查看实际发生的情况时,我发现 99% 的时间引擎都忙于从内联查询返回数据。看起来好像 MySql 实际上正在运行

在应用之前的内联查询的位

有点结果。这是真的吗?如果不是,那是怎么回事?我一直认为 inlineSELECT具有潜在危险,因为它们作为查询的最后一个元素逐行执行,但是对于这种情况,初始SELECT确实具有高度选择性,它可能非常有效。任何人都可以对此有所了解吗?

编辑:感谢到目前为止的反馈。我关心的不是内联查询的逐行性质,而是当面对变量而不是(相同的)硬编码值时它似乎无法使用主键索引这一事实。我的猜测是,如果最近没有运行 ANALYZE,那么优化器假定它必须进行表扫描,因为它不了解数据分布。但是,范围查找是在主键上完成的事实不应该弥补这一点吗?

0 投票
4 回答
199 浏览

mysql - Mysql查询优化

查询一:

查询 2:

cid是chal中的主键 cid和uid在c_users中被索引,cid不是唯一的;

以上查询哪个更好?

解释说以下

  • 查询 1 使用两种类型的索引,即 ALL 和 index_subquery

  • 查询 2 个用户两种类型的索引,即 ALL 和 ref

我想知道为什么两个查询都说 ALL 作为索引类型,尽管 cid 是表 chal 中的主键。

0 投票
1 回答
263 浏览

sqlite - sqlite 从 api 解释

我从我的应用程序中执行了一个复杂的 SQL 查询。该查询在 3.6.11 (64ms) 版本中运行良好。在 3.6.22 中运行时,需要 100 多秒才能完成。从命令行客户端执行时,在 11 和 22 中执行都很快。因此我想从我的应用程序内部运行带有“EXPLAIN”的查询。可能吗?我尝试准备并执行查询,然后将该列作为文本读取,但结果为空。

可以使用 C++ API 从我的应用程序中执行“解释”吗?

0 投票
3 回答
120 浏览

mysql - 解释说明查询很糟糕(它不使用单个键)但我使用的是 LIMIT 1。这是一个问题吗?

带有查询的解释命令:

结果:

在桌子上添加一些键会有什么不同吗?即使查询总是只返回一行。

0 投票
1 回答
352 浏览

mysql - How to optimize this mysql query - explain output included

This is the query (a search query basically, based on tags):-

And following is the database dump needed to execute this query:-

What the query does? This query actually searches tutors which contain "Brendan"(as their name or biography or something). The id_tags 2105,2120,2151,2026,2046 are nothing but the tags which are LIKE "%Brendan%".

My question is :-

1.In the explain of this query, the reference column shows NULL for ttagrels, but there are possible keys (Tutors_Tag_Relations,id_tutor,id_tag,id_tutor_2). So, why is no key being taken. How to make the query take references. Is it possible at all? 2. The other two tables td and u are using references. Any indexing needed in those? I think not.

Check the explain query output here http://www.test.examvillage.com/explain.png