mysql中的limit原理


mysql中的limit offset,count的原理是先取出offset+count條記錄,然后拋棄前面offset條,然后讀后面的count條,主要是offset的問題。所以會導致偏移量越大,性能越差。

優化方法:

select film_id,description from sakila.film order by title limit 10000,5;

1、給出大致范圍,增加確定范圍的條件,避免offset

select film_id,description from sakila.film where film_id > 10000 order by title limit 5;

*在大表做分頁時也會這么做,不提供總頁數和跳頁功能,只有下一頁按鈕,提高分頁效率

2、表非常大時,盡量使用索引覆蓋掃描,縮小回表時的范圍,比如:

select film.film_id,film.description from sakila.film
inner join(
	select film_id from sakila.film  order by title limit 50,5
) as lim using(film_id);

order by 和limit混用問題

如果在order by語句中返回的結果集有很多行,那么非排序的列的返回結果是不確定的,即隨機的,所以如果配合limit的話每次返回的結果集的順序是不固定的
如果需要有序,則需要將需要排隊的字段都放到order by中進行排序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM