MySQL的Limit详解
问题:数据库查询语句,如何只返回一部分数据?
Top子句
TOP 子句用于规定要返回的记录的数目。对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。
在SQL Server数据库中语法为:
SELECT TOP number|percent column_name(s) FROM table_name
但是并非所有的数据库系统都支持 TOP 子句,比如Oracle和MySQL,它们有等价的语法。
在Oracle数据库中语法为:
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
在MySQL数据库中语法为:
SELECT column_name(s) FROM table_name LIMIT number
MySQL的Limit子句
Limit子句可以被用于强制 SELECT 语句返回指定的记录数。Limit接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
//初始记录行的偏移量是 0(而不是 1):
mysql> SELECT * FROM table LIMIT 5,10; //检索记录行6-15
//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last
//如果只给定一个参数,它表示返回最大的记录行数目。换句话说,LIMIT n 等价于 LIMIT 0,n:
mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行
Limit的效率高?
常说的Limit的执行效率高,是对于一种特定条件下来说的:即数据库的数量很大,但是只需要查询一部分数据的情况。
高效率的原理是:避免全表扫描,提高查询效率。
比如:每个用户的email是唯一的,如果用户使用email作为用户名登陆的话,就需要查询出email对应的一条记录。
SELECT * FROM t_user WHERE email=?;
上面的语句实现了查询email对应的一条用户信息,但是由于email这一列没有加索引,会导致全表扫描,效率会很低。
SELECT * FROM t_user WHERE email=? LIMIT 1;
加上LIMIT 1,只要找到了对应的一条记录,就不会继续向下扫描了,效率会大大提高。
转载于:https://www.cnblogs.com/diandianquanquan/p/10852582.html
MySQL的Limit详解相关推荐
- MySQL的Limit详解(转载)
MySQL的Limit详解 问题:数据库查询语句,如何只返回一部分数据? Top子句 TOP 子句用于规定要返回的记录的数目.对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 在SQL Se ...
- 数据库mysql_row_MYSQL数据库mysql found_row()使用详解
<MYSQL数据库mysql found_row()使用详解>要点: 本文介绍了MYSQL数据库mysql found_row()使用详解,希望对您有用.如果有疑问,可以联系我们. mys ...
- MYSQL performance schema详解
MYSQL performance schema详解 0.performance_schema的介绍 MySQL的performance schema 用于监控MySQL server在一个较低级 ...
- node mysql 查询_Node.js使用mysql进行查询详解
本篇教程介绍了Node.js使用mysql进行查询详解,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入. < 因为返回的是个对象 var selectSql1=&quo ...
- Mysql加锁过程详解(3)-关于mysql 幻读理解
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- mysql status改变_mysql 配置详解mysql SHOW STATUS 详解
1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程. back_log ...
- MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过 ...
- Mysql存储引擎详解(MyISAM与InnoDB的区别)
Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...
- Mysql加锁过程详解(2)-关于mysql 幻读理解
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
最新文章
- java.lang.VerifyError
- 一个RESTful+MySQL程序
- Android中的颜色
- 立体匹配十大概念综述
- asp.net操作cookie
- 【正一专栏】谁能阻止超神的曼城
- KTV歌曲推荐-深入浅出协同过滤
- Delta架构:统一Lambda架构并利用Hadoop / REST中的Storm
- SwipeRefreshLayout官方推荐下拉刷新
- leetcode 42 接雨水 单调栈
- 苹果iPad mini 6更多细节曝光:全面屏加持 搭载A14/A15芯片
- arduino nano 蓝牙_贸泽开售结合蓝牙5.2与USB 2.0的 Nordic Semiconductor nRF52820多协议SoC...
- python数组(矩阵)乘法(点乘、叉乘)
- nsupdate处理ns注意事项
- 2019年linux云计算就业前景,云计算前景与网络前景
- 如何用命令行运行可执行程序.exe
- 请收下这份秘籍: 这里有关于申请 gTech 职位所需知道的一切
- CDN 的功能有哪些?
- CE认证机构有哪些机构?
- Clannad(1)
热门文章
- Oracle基础 TO_CHAR函数参考(转)
- AutoIT: ControlCommand是一个非常重要的指令
- mysql锁表和解锁语句
- CYQ.IISLogViewer 一款IIS 日志分析工具 V1.0 发布[提供源码]
- 加息造成的定期存款转存临界点!
- AndroidStudio_android中实现对properties文件的读写操作_不把properties文件放在assets文件夹中_支持读写---Android原生开发工作笔记238
- SpringCloud工作笔记083---Idea中启动多个项目的时候_内存调整_节省内存
- vermgr工作笔记002---SVN查看log时报“svn there has been a problem contacting the server”错误
- C++中public/private/protected三种继承方式下基类成员对派生类的可见性探讨
- VMware安装ubuntu中几个问题的解决——VMware Tools