limit用法

在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 
mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. 
mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 

Mysql的分页查询语句的性能分析

MySql分页sql语句,如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。使用它来分页是再自然不过的事情了。

最基本的分页方式:

SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ... 

复制代码 代码如下:

随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:

复制代码 代码如下:

此时,我们可以通过子查询的方式来提高分页效率,大致如下:

SELECT * FROM articles WHERE id >= (SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10 
SELECT * FROM `content` AS t1 JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2 WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize; 
id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY <derived2> system NULL NULL NULL NULL 1 1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 Using where2 DERIVED content index NULL PRIMARY 4 NULL 27085 Using index

实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。

更多相关文章

  1. Android(安卓)-- Android(安卓)JUint 与 Sqlite
  2. android 当系统存在多个Launcher时,如何设置开机自动进入默认的La
  3. Android(安卓)SQLiteDatabase的使用
  4. android 通话记录次数
  5. Android(安卓)SQLiteDatabase的使用
  6. android分页查询获取系统联系人信息
  7. android实现关键字搜索功能
  8. 我的android 第14天 - 使用SQLiteDatabase操作SQLite数据库
  9. Android(安卓)编码规范

随机推荐

  1. Android 按键驱动
  2. 【Android】图片切换组件ImageSwitcher的
  3. Android横屏竖屏设置
  4. Android 创建圆形背景图片
  5. Android天气预报项目
  6. 老司机理性分析:我的十年Android坎坷之路,
  7. android 网络异步加载数据进度条
  8. Android第七期 - 二维码扫描与生成图
  9. Android Architecture Components(一)Lifec
  10. Android实时获取当前下载速度