ID是自增主鍵,不知道為什么就是用不到索引,explain的時候rows掃的是全表,效率很低,換其他已經(jīng)索引的列也不行,分頁用到的order by。where 的時候可以用到索引,就是一order by就不行了,請教各位前輩~~~這樣可以用到索引:SELECT * FROM `XXX` ORDER BY id DESC LIMIT 10,40;這樣用不到索引:SELECT * FROM `XXX` ORDER BY id DESC LIMIT 10,41;用不到索引:SELECT * FROM `give` ORDER BY id desc LIMIT 400,20;這樣也用不到索引。。。:SELECT * FROM `give` ORDER BY id desc;update:現(xiàn)在庫里有520rows,有朋友說是因?yàn)樾袛?shù)小于1000,索引mysql認(rèn)為全表掃效率更高,是這樣的嗎?但是慢查詢?nèi)罩纠锼蚀_實(shí)不高??!
1 回答

LEATH
TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個贊
我覺得做分頁完全可以這樣:
SELECT *FROM `XXX` AS `x`INNER JOIN( SELECT `id` FROM `XXX` ORDER BY `id` DESC LIMIT M,N ) AS `t`USING(`id`)
子查詢用到了覆蓋索引,所以不需要掃描磁盤就找到了所需要的行的id,然后可以直接去磁盤取需要的數(shù)據(jù)了。