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

posted @ 2021-11-01 23:44  Leejk  阅读(852)  评论(0编辑  收藏  举报