Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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_Sql_Join_Indexing - Fatal编程技术网

Mysql 不使用索引,即使它存在

Mysql 不使用索引,即使它存在,mysql,sql,join,indexing,Mysql,Sql,Join,Indexing,下面是一个简单的查询:SELECT*FROM table LEFT连接table.id=table.id,其中table.id=1在table.id和table.id中有一个索引 当我检查它如何与EXPLAIN一起工作时,它显示它没有使用索引,并且遍历了所有行。我用另一个具有相同结构的精确表来检查,在本例中使用了索引 更奇怪的是,如果我有另一个更复杂的查询,比如 SELECT*FROM table LEFT JOIN table 2 ON table 2.id=table.id LEFT JOI

下面是一个简单的查询:
SELECT*FROM table LEFT连接table.id=table.id,其中table.id=1
在table.id和table.id中有一个索引

当我检查它如何与
EXPLAIN
一起工作时,它显示它没有使用索引,并且遍历了所有行。我用另一个具有相同结构的精确表来检查,在本例中使用了索引

更奇怪的是,如果我有另一个更复杂的查询,比如
SELECT*FROM table LEFT JOIN table 2 ON table 2.id=table.id LEFT JOIN table 3.id=table.id WHERE table.id=1
索引在两个表中都能完美工作,即使在有问题的
table 2


我完全肯定这是我的错误,但我真的不知道为什么有时使用索引,有时不。。。有谁能帮助我的MySQL专家吗?多谢各位

表有多大(行和列都有)。有时查询分析器会决定对小表进行全表扫描更有效……我还在开发中,所以“table2”有10行。但无论如何,有时索引正在使用,有时不使用,这就是问题所在。。!为什么这是个问题?我不会去猜测优化器,看起来你已经有了合适的索引,看看更多的数据是否仍然存在问题……我会检查一下,但我认为这是一个问题(我痴迷于优化一切),或者是一些我不知道索引如何工作的细节。谢谢;)如果您想要有更多的行,索引可能会被使用。数据库引擎决定使用全表扫描更经济。需要时使用优化,过早的优化会使您望而却步。