比如
select * from table where name="apple" and count=3;
如果仅仅对 name 做单列索引,而没有联合索引,我用 explain 发现没有用到索引
这是怎么回事?
比如
select * from table where name="apple" and count=3;
如果仅仅对 name 做单列索引,而没有联合索引,我用 explain 发现没有用到索引
这是怎么回事?
|
b821025551bSep 30, 2017
1
灌进去一千万条数据再试一下。
|
|
xinyewdzSep 30, 2017
2
mysql 引擎认为全表扫描比使用索引还快,放弃使用索引
|
|
huigeerSep 30, 2017
3
灌进去 2 千万再试试吧
|
|
4
@b821025551b 目前 5 百多万数据啊,这还不够啊
|
|
nandayeSep 30, 2017 via Android
7
如果数据量大且索引出来的量小,那可能是使用了错误的以前的执行逻辑,执行相同的语句数据库不是每次都会取样估计表的数据量,他会使用上次它判断的最优的执行逻辑。
|
|
cevincheungSep 30, 2017
9
@miniyao #5 看 postgresql 的查询计划会更无语的。
|
|
miniyaoSep 30, 2017 via Android
10
|
|
feiyuanqiuSep 30, 2017 via Android
11
想强制使用索引的话,在查询语句里加上 force index
|