2013年6月9日 星期日

MySQL Limit (文章轉貼)

MySQL的limit工作原理就是先讀取N筆記錄,然後拋棄前N筆,讀M筆想要的
所以N越大,性能會越差




優化前SQL: SELECT * FROM member ORDER BY last_active LIMIT 50,5

優化後SQL: SELECT * FROM member INNER JOIN (SELECT member_id FROM member ORDER BY last_active LIMIT 50, 5) USING (member_id)

分別在於,優化前的SQL需要更多I/O浪費
因為先預索引,再讀數據,然後拋棄無需的資料。
而優化後的SQL(子查詢)只讀索引(Cover Index)就可以了
然後,然後利用member_id讀取需要的資料即可。


資料來源


沒有留言:

張貼留言