时间:2021-05-02
在某些情况下,如果明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率。 例如下面的用户表(主键id,邮箱,密码): 复制代码 代码如下: create table t_user( id int primary key auto_increment, email varchar(255), password varchar(255) ); 每个用户的email是唯一的,如果用户使用email作为用户名登陆的话,就需要查询出email对应的一条记录。 SELECT * FROM t_user WHERE email=?; 上面的语句实现了查询email对应的一条用户信息,但是由于email这一列没有加索引,会导致全表扫描,效率会很低。 SELECT * FROM t_user WHERE email=? LIMIT 1; 加上LIMIT 1,只要找到了对应的一条记录,就不会继续向下扫描了,效率会大大提高。 LIMIT 1适用于查询结果为1条(也可能为0)会导致全表扫描的的SQL语句。 如果email是索引的话,就不需要加上LIMIT 1,如果是根据主键查询一条记录也不需要LIMIT 1,主键也是索引。 例如: SELECT * FROM t_user WHERE id=?; 就不需要写成: SELECT * FROM t_user WHERE id=? LIMIT 1; 二者效率没有区别。 附上我做的实验: 存储过程生成100万条数据: 复制代码 代码如下: BEGIN DECLARE i INT; START TRANSACTION; SET i=0; WHILE i<1000000 DO INSERT INTO t_user VALUES(NULL,CONCAT(i+1,'@xxg.com'),i+1); SET i=i+1; END WHILE; COMMIT; END 查询语句 复制代码 代码如下: SELECT * FROM t_user WHERE email='222@xxg.com'; 耗时0.56 s SELECT * FROM t_user WHERE email='222@xxg.com' LIMIT 1; 耗时0.00 s MySQL查询优化:LIMIT 1避免全表扫描提高查询效率
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率。最近在对项目中的一些sql进行优化,总结整
前言要想分析MySQL查询语句中的相关信息,如是全表查询还是部分查询,就要用到explain.索引的优点大大减少了服务器需要扫描的数据量可以帮助服务器避免排序或
在MySQL数据库操作中,我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的。其实我们可以使
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。 2.应尽量避免在where子句中对字段进行null值判
mysql查询语句,通过limit来限制查询的行数。例如:selectnamefromusertbwhereage>20limit0,1;//限制从第一条开始,