MySQL子查询在大表中非常慢

标签 mysql query-optimization

我有一个像这样的sql查询:

SELECT o_id, someColumn... FROM link_table WHERE s_id = 1 and o_id IN
(SELECT s_id FROM link_table WHERE o_id=2)

这个sql查询是为了找出特定s_id和o_id之间连接的intermediate_id,但是看起来非常慢。大约需要 10 秒。

link_table 很大(有 40M 行)

有人可以帮助我吗? 谢谢。

最佳答案

试试这个:根据我的经验,EXISTSIN Cluase 提供更好的性能

SELECT o_id, someColumn... 
FROM link_table t1 
WHERE s_id = 1 and EXISTS (SELECT 1 
                           FROM link_table t2 
                           WHERE t2.s_id=t1.o_id AND t2.o_id=2)

关于MySQL子查询在大表中非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44580818/

相关文章:

java - Spring JPA - MySQL 数据库创建外键时 Hibernate 出错

mysql - 社交应用程序的数据库设计和优化注意事项

mysql - 哪种 PDO SQL 查询在长期和大量数据中更快?

postgresql - Postgres 查询优化(强制索引扫描)

mysql - 如何防止 CASE WHEN x THE(子查询)中出现依赖子查询

php - MySQL SELECT WHERE 多个值

php - 当在while循环中写入表时,如何从php中的表中获取一个值?

MySQL 创建表

mysql - 修改列数据类型的Sql脚本

sql - 优化除查询之外的sql