mysql 中 limit 的效率問題


limit 效率問題

limit 是由mysql 的 server 層實現的。

一、如何用limit提升查詢性能:

select * from T where login_name = 'XXX‘
如果 T.login_name 沒有建立索引,則上面的查詢語句會全表掃描。
select * from T where login_name = 'XXXX' limit 1
如果加上limit 1 當掃描到一條的數據的時候則不會再繼續掃描,效率會大大的提高。

二、limit 低效率的情況:

在一種情況下 limit 效率非常低,只使用limit來查詢的語句,並且偏移量特別大的情況。
例如:select * from table limit 15000000,1000;
select * from table while id>=150000 limit 1000;
  語句1為0.2077秒;語句2為0.0063秒
  兩條語句的時間比是:語句1/語句2=32.968
 
比較以上的數據時,我們可以發現采用where...limit....性能基本穩定,受偏移量和行數的影響不大,而單純采用limit的話,受偏移量的影響很大,當偏移量大到一定值后性能開始大幅下降。不過在數據量不大的情況下,兩者的區別不大。
 
所以應當先使用where等查詢語句,配合limit使用,效率才高


免責聲明!

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



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