我正在写的查询:避免在MySQL全表扫描,同时使用以便通过用限制
select * from table_name order by id limit 21
直到我使用限制为更小或等于20得到扫描的行是等于确切提取行(例如,如果限制为10,则仅比扫描的行还仅10)。如果限制超过20,表格将完全扫描。
仅为主键ID创建的唯一索引。在这种情况下,任何人都可以说出全表扫描的原因吗?
我的表格有1099行。
Explain Result:
---------------------------------------------------------------------------
id|selecttype|table |type|possiblekeys|keys|key_len|ref |rows| Extra
---------------------------------------------------------------------------
1 | SIMPLE |tablen|ALL | null |null|null |null|1099|Usingfilesort
---------------------------------------------------------------------------
你确定你有'table_name(id)'的索引吗? – 2012-01-18 11:20:54
你能测试你的这样的查询: select table from table_name order by id limit 21 请加你的问题解释结果和表结构 – motto 2012-01-18 11:25:26
查询速度慢吗?表格有多少行?如果你只有几百行,那么整个扫描“LIMIT 100”就是优化器认为的更快。 – 2012-01-18 11:40:18