mysql limit 算法_MySQL的limit用法及优化(转)
常规用法:
用法一:
SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2 OFFSET 1;
比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取。
用法二:
SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2,1;
而这个SQL,limit后面是从第2条开始读,读取1条信息。
用法三:
select * from tablename limit 100,-1
从第100条后开始-最后一条的记录。
用法四:
select * from tablename limit 15
相当于limit 0,15,查询结果取前15条数据
用法五:
MySQL低版本不支持limit offset
limit offset在MySQL 4.0以上的版本中都可以正常运行,在旧版本的MySQL 3.23中无效
limit m offset n等价于limit m,n
limit的优化:
MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降
MySQL的优化是非常重要的。其他最常用也最需要优化的就是limit。MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。
同样是取10条数据
select * from yanxue8_visit limit 10000,10
select * from yanxue8_visit limit 0,10
就不是一个数量级别的。
网上也很多关于limit的五条优化准则,都是翻译自MySQL手册,虽然正确但不实用。今天发现一篇文章写了些关于limit优化的,很不错。
文中不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据。根据他的数据,明显要好于直接使用limit。这里我具体使用数据分两种情况进行测试。
(测试环境CentOS 6+P4双核(3GHZ)+4G内存 MySQL 5.0.19)
1、offset比较小的时候。
select * from yanxue8_visit limit 10,10
多次运行,时间保持在0.0004-0.0005之间
Select * From yanxue8_visit Where vid >=(Select vid From yanxue8_visit Order By vid limit 10,1) limit10
多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。
2、offset大的时候。
select * from yanxue8_visit limit 10000,10
多次运行,时间保持在0.0187左右
Select * From yanxue8_visit Where vid >=(Select vid From yanxue8_visit Order By vid limit 10000,1) limit10
多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。
参考:
mysql limit 算法_MySQL的limit用法及优化(转)相关推荐
- mysql limit 算法_MySQL的Limit详解
问题:数据库查询语句,如何只返回一部分数据? Top子句 TOP 子句用于规定要返回的记录的数目.对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 在SQL Server数据库中语法为: S ...
- mysql limit锁_mysql中limit的用法
语法: SELECT * FROM 表名 limit m,n; SELECT * FROM table LIMIT [offset,] rows; 注释: Limit子句可以被用于强制 SELECT ...
- mysql使用方法_Mysql的常用用法
一.mysql中limit的用法详解[数据分页常用] 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT ...
- mysql 分页算法_MySQL高效的分页算法
PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇"Efficient Pagination Using MySQL"的报告, ...
- explain mysql怎么用_mysql中explain用法详解
EXPLAIN用于SELECT语句中的每个表返回一行信息.表以它们在处理查询过程中将被MySQL读入的顺序被列出 如果在select语句前放上关键词explain,mysql将解释它如何处理selec ...
- java mysql 分页查询_MySQL分页查询方法及优化
当数据库的数据量很大时,一次性查询结果就会变得很慢,为了提高查询效率,我们可以使用MySQL的分页查询功能.本文就为大家带来MySQL分页查询方法及优化. 推荐阅读: 分页查询方法: 在MySQL中, ...
- mysql limit括号_MYSQL中LIMIT使用简介
LIMIT是MySQL内置语法,其作用是用于限制查询结果的条数. 1)其语法格式如下: LIMIT[位置偏移量,]行数 其中,中括号里面的参数是可选参数,位置偏移量是指MySQL查询分析器要从哪一行开 ...
- mysql select 使用_mysql select简单用法
mysql select简单用法 1.select语句可以用回车分隔 $sql=select * from article where id=1 和 $sql=select * from articl ...
- php mysql 排名算法_MySQL PHP:优化排名查询和计数子查询
这是原始数据,并希望根据得分(count(tbl_1.id))对它们进行排名. [tbl_1] =========== id | name =========== 1 | peter 2 | jane ...
最新文章
- 按下电源后的几秒钟,CPU在干嘛?
- why is pc important for university students?
- php5.2 zengd,大对杀狗狗再犯低级错误 ZEN狂输200目笑翻棋友
- 搜索Maven依赖资源_搜索Maven工件_搜索Maven构件_搜索依赖_搜索构件_搜索工件
- REVERSE-PRACTICE-BUUCTF-6
- mysql 跨实例复制数据_社区投稿 | MySQL 跨实例 copy 大表解决方案
- 开启docker中MongoDB的认证授权
- Redis的内存回收机制和数据过期淘汰策略
- ES查询-基本查询续
- 地图结合资料 提供全新网络服务
- jQuery1.3以上版本@的问题
- 从 阿西莫夫机器人三大定律 谈起
- UVAlive3662 Another Minimum Spanning Tree 莫队算法
- 一、Java入门基础
- 移动端:纯html 基于 mescroll 插件实现上拉加载,下拉刷新,返回顶部
- 文档服务器设置密码,服务器密码设置要求
- Unity Animator Animation详解及应用实例教程
- 微信推出网页版传输助手,真的好用吗?
- PDA模拟中的问题1
- 计算机网络设备调试员报名,工信部网络设备调试员一级高级技师、二级技师