Between And 和 Limit 查詢效率對比


Limit

Limit:SELECT 語句返回指定的記錄數。Limit 后接收一個或兩個整數參數。

如果寫兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的數目。

Limit效率:

1.對於數據量大,只需要查詢部分數據。

比如:select * from stu_score where student = '小虎';
由於student字段沒有索引,這樣會導致全表掃描。


優化:select * from stu_score where student = '小虎' limit 1;
使用limit后,在找到‘小虎’后不會繼續往下掃描。

2.當偏移量大時,會全表掃描

比如:select * from app_log where id limit 35000,1000;
這樣會導致全表掃描。

優化:select * from app_log where id>= 35000 limit 1000;

通常對於limit的使用都是在最后才用到的,條件寫好后在用limit,這樣能提高查詢效率。
一般順序:where->group by->having-order by->limit

Between And

選取介於兩個值之間的數據范圍。

WHERE column BETWEEN value1 AND value2
WHERE column NOT BETWEEN value1 AND value2

通常 value1 應該小於 value2。當 BETWEEN 前面加上 NOT 運算符時,表示與 BETWEEN 相反的意思,即選取這個范圍之外的值。(MySQL中,范圍是閉區間,就是包含value1和value2)

對比單獨使用limit而言,Between And走value對應的字段的索引,不會全表掃描,通常效率要好些。

在庫里執行完可以看到,limit是type = all,而between是 type = range


免責聲明!

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



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