北京SEO

mysql limit用法之limit分页详解

2019/10/10/17:35:31  阅读:2038  来源:谷歌SEO算法  标签: SEO工具

在mysql中limit是计算从X到Y的偏移记录,如我们数据库中100条记录,如果我想取前20条从就可以直接limit 0,20条就可以得到我们要的结果了,下面我来具体介绍linut用法.

mysql limit语法,代码如下:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数,LIMIT 接受一个或两个数字参数,参数必须是一个整数常量,如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目,初始记录行的偏移量是 0(而不是 1),为了与 PostgreSQL 兼容,MySQL 也支持句法:LIMIT # OFFSET #,代码如下:

  1. mysql>SELECT*FROMtableLIMIT5,10;//检索记录行6-15
  2. //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为-1:
  3. mysql>SELECT*FROMtableLIMIT95,-1;//检索记录行96-last.
  4. //如果只给定一个参数,它表示返回最大的记录行数目:
  5. mysql>SELECT*FROMtableLIMIT5;//检索前5个记录行
  6. //换句话说,LIMITn等价于LIMIT0,n。

上面的做法在数据量小的时间还是很快的,但是各万张数据就不行了,我们可以对limit进行如下优化,我现在测试100W数据结果如下:

  1. Select*Fromyanxue8_visitWherevid>=(SelectvidFromyanxue8_visitOrderByvidlimit10,1)limit10次运行,时间保持在0.0005-0.0006之间,主要是0.0006
  2. select*fromyanxue8_visitlimit10000,10多次运行,时间保持在0.0187左右
  3. Select*Fromyanxue8_visitWherevid>=(SelectvidFromyanxue8_visitOrderByvidlimit10000,1)limit10

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

结合与php分页实例,代码如下:

  1. <html>
  2. <head>
  3. <title>
  4. ShowData
  5. </title>
  6. </head>
  7. <body>
  8. <h2>ShowData</h2>
  9. <?php
  10. //连接数据库
  11. $page=1;
  12. $db=mysql_connect('127.0.0.1','root','toor');
  13. mysql_select_db('test',$db);
  14. $pagesize=3;//每页显示到数量
  15. //计算一共有多少记录,用于计算页数
  16. $rs=mysql_query("selectcount(*)frominfo",$db);
  17. $row=@mysql_fetch_array($rs);
  18. $numrows=$row[0];
  19. //计算页数
  20. $pages=intval($numrows/$pagesize);
  21. if($numrows%$pagesize)
  22. {
  23. $pages++;
  24. }
  25. //设置页数
  26. if(isset($_GET['page']))
  27. {
  28. $page=intval($_GET['page']);
  29. }
  30. else
  31. {
  32. $page=1;//其他情况,都指向第一页
  33. }
  34. //计算记录的偏移量
  35. $offset=$pagesize*($page-1);
  36. //读取指定记录
  37. $rs=mysql_query("select*frominfoorderbyidlimit$offset,$pagesize",$db);
  38. //把数据用表格显示出来
  39. if($row=@mysql_fetch_array($rs))
  40. {
  41. $i=0;
  42. ?>
  43. <tableborder='0'width='80%'>
  44. <tr>
  45. <tdwidth='50%'>
  46. <palign='center'>ID</td>
  47. <tdwidth='50%'>
  48. <palign='center'>DOC</td>
  49. </tr>
  50. <?php
  51. do{
  52. $i++;
  53. ?>
  54. <tralign='center'>
  55. <tdwidth='50%'><?=$row['id']?></td>
  56. <tdwidth='50%'><?=$row['doc']?></td>
  57. </tr>
  58. <?php
  59. }
  60. //循环显示数据
  61. while($row=mysql_fetch_array($rs));
  62. echo"</table>";
  63. }
  64. echo"<divalign='center'>共".$pages."页(".$page."/".$pages.")";
  65. for($i=1;$i<$page;$i++)
  66. {
  67. echo"<ahref='showdata.php?page=".$i."'>[".$i."]</a>";
  68. }//phpfensi.com
  69. echo"[".$page."]";
  70. for($i=$page+1;$i<=$pages;$i++)
  71. {
  72. echo"<ahref='showdata.php?page=".$i."'>[".$i."]</a>";
  73. }
  74. echo"</div>";
  75. ?>
  76. </body>
  77. </html>

广告内容

mysql limit用法之limit分页详解 mysql limit用法之limit分页详解 mysql limit用法之limit分页详解

相关阅读

热门评论

爱互踩 爱互踩

爱互踩流量交换~

总篇数175

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法