当前位置:首页 > 编程教程 > mysql技术文章 > MySQL对limit查询语句的优化方法

MySQL limit查询语句的优化技巧

  • 发布时间:
  • 作者:码农之家
  • 点击:61

这篇文章主要知识点是关于MySQL、limit、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

PHP和MySQL Web开发
PHP和MySQL Web开发中文高清第5版
  • 类型:PHP网站开发大小:27 MB格式:PDF作者:卢克·韦林
立即下载

MySQL对limit查询语句的优化方法

当我们的网站达到一定的规模时,网站的各种优化是必须要进行的。而网站的优化中,针对数据库各种优化是最重点的了。下面作者将要和大家分享一下MySQL数据库中的查询语句有关limit语句的优化。

大家都知道一般limit是用在分页的程序的分页上的,当你的应用数据量够小的时候,也许你感觉不到limit语句的任何问题,但当查询数据量达到一定程度的时候,limit的性能就会急剧下降。这个是通过大量实例得出来的结论。

下面通过具体的案例来说明,这里是对同一张表在不同的地方取10条数据:
(1)offset比较小的时候

 
select * from user limit 10,10;

这条SQL语句多次运行,时间保持在0.0004-0.0005之间。
 
Select * From user Where uid >=( Select uid From user Order By uid limit 10,1 ) limit 10;

这条SQL语句多次运行,时间保持在0.0005-0.0006之间,主要是0.0006。
结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。
(2)offset大的时候
 
select * from user limit 10000,10;

这条SQL语句多次运行,时间保持在0.0187左右
 
Select * From user Where uid >=( Select uid From user Order By uid limit 10000,1 ) limit 10;

这条SQL语句多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。

 

经过以上对比,我们得出一个结论是使用limit语句时,当数据量偏移量较小的时候可以直接使用limit,当数据量偏移量较大的时候,我们可以适当的使用子查询来做相关的性能优化。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

MySQL 相关电子书
学习笔记
网友NO.205596

mysql中limit的用法深入分析

select * from table limit m,n其中m是指记录开始的index,从0开始,n是指从第m条开始,取n条。 mysql(root@localhost:test)select * from total; +----+-----------------+--------+------------+ | id | name | number | mydate | +----+-----------------+--------+------------+ | 1 | 河南出版社 | 1000 | 2008-03-24 | | 2 | 河南出版社 | 1200 | 2009-04-24 | | 3 | 河南出版社 | 1100 | 2010-04-24 | | 4 | 河南出版社 | 1400 | 2011-04-24 | | 5 | 河南出版社 | 1350 | 2012-04-24 | | 6 | 北京出版社 | 2000 | 2008-03-24 | | 7 | 北京出版社 | 2020 | 2009-04-24 | | 8 | 北京出版社 | 2050 | 2010-04-24 | | 9 | 北京出版社 | 1980 | 2011-04-24 | | 10 | 北京出版社 | 2100 | 2012-04-24 | +----+-----------------+--------+------------+ 10 rows in set (0.00 sec) mysql(root@localhost:test)select * from total limit 2,3; +----+-----------------+--------+------------+ | id | name | number | mydate | +----+-----------------+--------+------------+ | 3 | 河南出版……

网友NO.951307

mysql提示Changed limits: max_open_files: 2048 max_connections: 1910 table_cache: 64的解决

在windows下安装Mysql系统日志出现max_open_files: 2048 max_connections: 510 table_cache: 764 类似错误是因为 max_connections 最大连接数和max_open_files、table_cache 不匹配。适当的降低max_connections 或调整其他两个数值 解决办法在 mysql bin 中输入 mysql-nt --table_cache=764 mysql-nt --innodb_open_files=2048 即可!! table_cache和max_connections 在my.ini 里可调 Changed limits: max_open_files: 2048 max_connections: 1024 table_cache: 507 max_connections=1024 table_cache=500 附: 以上是由于你的my.ini 或者my.cfg等等里面的 max_connections 和table_cache设置不对造成的。系统为你自动调整为相对比较接近的数值。 max_connections,table_cache不是越大越好。请参考以下公式进行匹配: 由于max_open_files是固定的,在windows里面只能是2048. 2048= max_connections+table_cache*2 原则上说来,只要设置好了一半就不会报错了,最好是后面设置为稍微小于2048,不……

网友NO.764372

在MySQL中使用LIMIT进行分页的方法

今天看一个水友说他的MySQL现在变的很慢。问什么情况时。说单表超过2个G的一个MyISAM。真垃圾的回答方式。 简单答复:换一个强劲的服务器。换服务器很管用的:) ……… 最终让取到慢查询: SELECT * FROM pw_gbook WHERE uid='N' ORDER BY postdate DESC LIMIT N,N; SELECT * FROM pw_gbook WHERE uid='N' ORDER BY postdate DESC LIMIT N,N; 如: SELECT * FROM pw_gbook WHERE uid='48' ORDER BY postdate DESC LIMIT 1275480,20; SELECT * FROM pw_gbook WHERE uid='48' ORDER BY postdate DESC LIMIT 1275480,20; 看到这个语句我都吐血了(BT的PHPWIND分页啊,这个语句是PHP初学者写出来的还正常,但PHPWIND那么成熟的社区了还有这样的问题)。 我这里简单说一下LIMIT的原理。这里以LIMIT N,M为基础:LIMIT首先要找查N+M行,然后从N行处,取M行。那么这样的SQL对一次查询1275500一个操作应该是一个昂贵的开销。对于LIMIT这类的优化,第一个目标就是让……

网友NO.360210

详解MySQL的limit用法和分页查询语句的性能分析

limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的 偏移量 ,第二个参数指定返回记录行的最大数目。 初始记录行的偏移量是 0(而不是 1) : 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。 mysql SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. 如果只给定一个参数,它表示返回最大的记录行数目: mysql……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com