繁体   English   中英

MySQL索引-连接两个表

[英]mysql indexing - joining two tables

我有一个表T1,其中2列是c1和c2。它们是表格U1中col c3的外键引用cols。 查询的内容类似于"select ....... from T1, U1 as Ux and U1 as Uy where T1.c1 = 'xyz' and T1.c1 = Ux.c3 and T1.c2 = Uy.c3"

如果索引了哪个col,则结果最佳。 单独使用 c1c1 c2的组合

您可以使用EXPLAIN并仅放置两个方案。 自己尝试,您将轻松发现更好的查询

加入怎么样?

SELECT * FROM T1
INNER JOIN U1 ON U1.c3=T1.c1 AND U1.c3=T1.c2
WHERE T1.c1 = 'xyz'

我并没有真正了解您要尝试执行的操作,但是尝试从此c1和c2获取任何内容必须相同。

只要您的“ c1”列是查询的唯一部分,并且在复合索引(c1,c2)的情况下,它位于索引的第一位置,则不会产生实际影响。 它将仍然被优化。 如果“ c1”位于第二位置,那么就不好了……因为从本质上讲,必须循环查找匹配的c1的每个c2。 就是说,如果您的c2列是一个可怕的值(例如varchar 1000字符串),它将很麻烦,因为它必须考虑索引键的长度和额外的分页。 但是,无论如何都不会对这种组合建立索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM