mysql - SQL 内联多表一次查询
问题描述
我有一个像下面这样的查询,
SELECT
c.testID,
FROM a
INNER JOIN b ON a.id=b.ID
INNER JOIN c ON b.r_ID=c.id
WHERE c.test IS NOT NULL;
这个查询可以进一步优化吗?我希望三个表之间的内部连接只有在满足 where 子句时才会发生。
解决方案
Where 子句用作对所有 JOIN 之后出现的数据的过滤器,而如果您对 JOIN 子句本身使用相同的限制,那么它将在避免连接后过滤器的意义上进行优化。也就是说,改为加入过滤的数据。
SELECT c.testID,
FROM a
INNER JOIN b ON a.id = b.ID
INNER JOIN c ON b.r_ID = c.id AND c.test IS NOT NULL;
test
此外,您必须为表中的列创建索引c
以加快查询速度。
此外,学习 EXPLAIN 命令以获取最佳结果。