MySQL查询优化:LIMIT 1避免全表扫描提高查询效率

时间:2024-01-29 08:33:13 

在某些情况下,如果明知道查询结果只有一个,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避免全表扫描提高查询效率

标签:优化,LIMIT
0
投稿

猜你喜欢

  • python+tifffile之tiff文件读写方式

    2022-03-16 13:17:41
  • vue.js实现含搜索的多种复选框(附源码)

    2024-05-13 09:11:00
  • 用CSS定义 li 样式

    2007-09-28 20:56:00
  • SQL Server 2016 TempDb里的显著提升

    2024-01-24 17:15:47
  • Python脚本实现一键自动整理办公文件

    2022-01-02 16:36:03
  • 整合ckeditor+ckfinder,解决上传文件路径问题

    2022-12-10 09:25:39
  • MySQL分页优化解析

    2008-12-22 14:56:00
  • Python 匹配任意字符(包括换行符)的正则表达式写法

    2023-01-23 23:11:09
  • MySql获取某个字段存在于哪个表的sql语句

    2024-01-18 23:12:11
  • Python最长回文子串问题

    2023-10-02 16:13:21
  • 使用AJAX和Django获取数据的方法实例

    2021-11-14 20:40:20
  • Python pymongo模块常用操作分析

    2021-06-13 11:01:05
  • Python变量名详细规则详细变量值介绍

    2021-08-05 07:51:57
  • golang 获取字符串长度的案例

    2024-04-27 15:40:47
  • Scrapy模拟登录赶集网的实现代码

    2023-02-22 20:33:47
  • Python基于Matplotlib库简单绘制折线图的方法示例

    2021-10-26 15:01:12
  • python的exec、eval使用分析

    2022-05-26 18:38:25
  • 详解Django配置优化方法

    2023-11-01 05:46:58
  • 解决Django的request.POST获取不到内容的问题

    2022-12-26 18:55:20
  • 浅谈Python基础之I/O模型

    2021-11-17 18:38:03
  • asp之家 网络编程 m.aspxhome.com