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