当前位置:  数据库>mysql

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

    来源: 互联网  发布时间:2014-10-08

    本文导语:  在某些情况下,如果明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率。 例如下面的用户表(主键id,邮箱,密码): 代码如下: create table t_user( id int primary key auto_increment, email varchar(255), password varchar(255) ); 每个用户的...

在某些情况下,如果明知道查询结果只有一个,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

    
 
 

您可能感兴趣的文章:

  • Mysql查询错误:ERROR:no query specified原因
  • mysql查询语句通过limit来限制查询的行数
  • Mysql设置查询条件(where)查询字段为NULL
  • mysql 开启慢查询 如何打开mysql的慢查询日志记录
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • mysql 设置查询缓存
  • Mysql Select查询执行流程介绍及实例
  • MySQL 慢查询监控器 Anemometer
  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • MySQL并行查询引擎 Shard-Query
  • Mysql大表查询优化技巧总结及案例分析
  • 清空mysql 查询缓存的可行方法
  • 在C中如何判断从mysql中查询到的NULL值?
  • php mysql查询指定范围内日期
  • mysql取当前时间与当前日期查询代码
  • MySQL运行状况查询方式介绍
  • 把mysql查询结果保存到文件的shell脚本
  • mysql 查询表中平均分最低的班级
  • mysql 跨表查询、更新、删除示例
  • mysql仿oracle的decode效果查询
  • php查询时间段 mysql时间查询
  • Mysql如何避免全表扫描的方法
  • 请问我的服务器上明明装了mysql,但是从外网扫描端口就是扫不出来,而且防火墙没有开。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++操作MySQL大量数据插入效率低下的解决方法
  • mysql下普通索引和唯一索引的效率对比
  • 根据mysql慢日志监控SQL语句执行效率
  • java开发知识 iis7站长之家
  • 作为Mysql Server, 哪个Linux 较高效率?
  • MySQL随机查询记录的效率测试分析
  • MySQL大表中重复字段的高效率查询方法
  • mysql数据库查询优化 mysql效率第1/3页
  • MYSQL 随机 抽取实现方法及效率分析
  • MySQL Order By Rand()效率分析
  • mysql分页原理和高效率的mysql分页查询语句
  • MySQL 联合索引与Where子句的优化 提高数据库运行效率
  • MySQL优化之如何查找SQL效率低的原因
  • mysql中RAND()随便查询记录效率问题和解决办法分享
  • 提高MySQL中数据装载效率
  • mysql中提高Order by语句查询效率的两个思路分析
  • MySQL中Stmt 预处理提高效率问题的小研究
  • mysql中使用UDF自动同步memcached效率笔记
  • mysql下mysql-udf-http效率测试小记
  • 提高MySQL 查询效率的三个技巧第1/2页
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • php安装完成后如何添加mysql扩展
  • MySQL 重装MySQL后, mysql服务无法启动
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • MySQL Workbench的下载安装与使用教程
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3