Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql索引-连接两个表_Mysql_Indexing - Fatal编程技术网

mysql索引-连接两个表

mysql索引-连接两个表,mysql,indexing,Mysql,Indexing,我有一个表T1,其中两列是c1和c2。它们是表U1中c3列的外键引用列。 查询类似于“从T1中选择……,U1作为Ux,U1作为Uy,其中T1.c1='xyz'和T1.c1=Ux.c3,T1.c2=Uy.c3” 哪一列,如果索引,给出最好的结果。 c1单独使用或将c1和c2组合使用您可以使用EXPLAIN解释两种场景。你自己试试,你会很容易发现更好的查询加入怎么样 SELECT * FROM T1 INNER JOIN U1 ON U1.c3=T1.c1 AND U1.c3=T1.c2 WHERE

我有一个表T1,其中两列是c1和c2。它们是表U1中c3列的外键引用列。 查询类似于“从T1中选择……,U1作为Ux,U1作为Uy,其中T1.c1='xyz'和T1.c1=Ux.c3,T1.c2=Uy.c3”

哪一列,如果索引,给出最好的结果。
c1
单独使用或将
c1
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的字符串,它会哽咽,因为它必须考虑索引键长度和额外分页。然而,无论如何,基于这种组合的索引将不会被认为是常见的