【发布时间】:2026-01-27 23:40:01
【问题描述】:
我正在尝试从大量数据中进行查询。查询继续运行,没有任何结果或错误。我为一小组测试数据运行的相同查询工作正常。
查询:
> SELECT * FROM table1 t1 WHERE t1.col1 IN (SELECT distinct(t2.col2)
> FROM table2 t2 Left Join table3 t3 on t2.col1 = t3.col1 WHERE
> t3.col1=value);
我再次尝试使用
查询大量数据SELECT * FROM table1 t1 WHERE t1.col1 = (raw_value); - 单值过滤器工作正常。
SELECT * FROM table1 t1 WHERE t1.col1 IN ( raw_value, raw_value); - 一个以上的值过滤器会导致性能问题。
请给我一些改进性能的建议。
-谢谢。
【问题讨论】:
-
您可以使用“EXPLAIN”来帮助您深入了解问题 - dev.mysql.com/doc/refman/5.7/en/explain.html。在表面上,我认为该列没有被索引?
-
left join的意义何在? -
请提供
SHOW CREATE TABLE和EXPLAIN SELECT ... -
请在代码问题中提供minimal reproducible example--包括剪切、粘贴和可运行代码。对于包含 DBMS 和 DDL 的 SQL,包括约束、索引和表格初始化。对于包括 EXPLAIN 结果和统计信息的 SQL 性能。请研究和总结。对于包括优化/性能基础的 SQL——立即导致索引、计划、统计和 SARGability。 Tips for asking a good SQL question 对于可以是文本的内容,请使用文本,而不是图像/链接。将您的问题所需的一切都放在您的帖子中,而不仅仅是在链接中。
标签: mysql sql join mysql-workbench query-optimization