问题:数据库查询语句,如何只返回一部分数据?

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详解相关推荐

  1. MySQL的Limit详解(转载)

    MySQL的Limit详解 问题:数据库查询语句,如何只返回一部分数据? Top子句 TOP 子句用于规定要返回的记录的数目.对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 在SQL Se ...

  2. 数据库mysql_row_MYSQL数据库mysql found_row()使用详解

    <MYSQL数据库mysql found_row()使用详解>要点: 本文介绍了MYSQL数据库mysql found_row()使用详解,希望对您有用.如果有疑问,可以联系我们. mys ...

  3. MYSQL performance schema详解

    MYSQL performance schema详解 0.performance_schema的介绍 ​ MySQL的performance schema 用于监控MySQL server在一个较低级 ...

  4. node mysql 查询_Node.js使用mysql进行查询详解

    本篇教程介绍了Node.js使用mysql进行查询详解,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入. < 因为返回的是个对象 var selectSql1=&quo ...

  5. Mysql加锁过程详解(3)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  6. mysql status改变_mysql 配置详解mysql SHOW STATUS 详解

    1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程. back_log ...

  7. MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)

    MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测) 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过 ...

  8. Mysql存储引擎详解(MyISAM与InnoDB的区别)

    Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎     MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...

  9. Mysql加锁过程详解(2)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

最新文章

  1. java.lang.VerifyError
  2. 一个RESTful+MySQL程序
  3. Android中的颜色
  4. 立体匹配十大概念综述
  5. asp.net操作cookie
  6. 【正一专栏】谁能阻止超神的曼城
  7. KTV歌曲推荐-深入浅出协同过滤
  8. Delta架构:统一Lambda架构并利用Hadoop / REST中的Storm
  9. SwipeRefreshLayout官方推荐下拉刷新
  10. leetcode 42 接雨水 单调栈
  11. 苹果iPad mini 6更多细节曝光:全面屏加持 搭载A14/A15芯片
  12. arduino nano 蓝牙_贸泽开售结合蓝牙5.2与USB 2.0的 Nordic Semiconductor nRF52820多协议SoC...
  13. python数组(矩阵)乘法(点乘、叉乘)
  14. nsupdate处理ns注意事项
  15. 2019年linux云计算就业前景,云计算前景与网络前景
  16. 如何用命令行运行可执行程序.exe
  17. 请收下这份秘籍: 这里有关于申请 gTech 职位所需知道的一切
  18. CDN 的功能有哪些?
  19. CE认证机构有哪些机构?
  20. Clannad(1)

热门文章

  1. Oracle基础 TO_CHAR函数参考(转)
  2. AutoIT: ControlCommand是一个非常重要的指令
  3. mysql锁表和解锁语句
  4. CYQ.IISLogViewer 一款IIS 日志分析工具 V1.0 发布[提供源码]
  5. 加息造成的定期存款转存临界点!
  6. AndroidStudio_android中实现对properties文件的读写操作_不把properties文件放在assets文件夹中_支持读写---Android原生开发工作笔记238
  7. SpringCloud工作笔记083---Idea中启动多个项目的时候_内存调整_节省内存
  8. vermgr工作笔记002---SVN查看log时报“svn there has been a problem contacting the server”错误
  9. C++中public/private/protected三种继承方式下基类成员对派生类的可见性探讨
  10. VMware安装ubuntu中几个问题的解决——VMware Tools