|
|
1
4
尝试用联接替换子查询:
这里有一个链接到 article about this problem |
|
|
2
4
我以前见过这个。这是mysql中的一个bug。试试这个:
|
|
3
2
尝试:
也就是说:如果它是独立的,可能是因为在什么方面存在歧义
如果这不起作用,只需执行以下操作:
|
|
|
4
0
MySQL支持的存在方式是否与MSSQL相同? 如果是这样,您可以将查询重写为
使用IN效率极低,因为它为父查询中的每一行运行子查询。 |
|
|
5
0
这解决了问题,但仍然不能回答我的问题:) 编辑:如果我正确解释解释输出,这会很快,因为解释程序会生成一个临时索引:
|
|
|
6
0
从文件中选择* 如您所见,子查询实际上是依赖的。 MySQL 5.6可以选择具体化子查询。也就是说,首先,运行内部查询并将结果存储在临时表中(删除重复项)。然后,它可以在外部表(即文件)和临时表之间使用类似联接的操作来查找不匹配的行。如果reades.file_id未编入索引,则这种执行查询的方式可能会更为理想。 然而,如果reades.file_id被索引,传统的IN-to-EXISTS执行策略实际上相当有效。在这种情况下,我不希望像其他答案中所建议的那样,将查询转换为联接会有任何显著的性能改进。MySQL 5.6优化器根据成本在物化和执行之间做出选择。 |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |