9159金沙游艺场-奥门金沙游艺场-[欢迎您]

9159金沙游艺场为您呈现最新的面貌!,目前注册送体验金,欢迎您将成为影视娱乐行业新的风向标,是亚洲的优质娱乐先锋。

MySQL高效分页解决方案集分享【9159金沙游艺场】

日期:2020-03-28编辑作者:前端

一,最不乏先例MYSQL最中央的分页格局:复制代码 代码如下:select * from content order by id desc limit 0, 10在中等数据量的图景下,那样的SQL充足用了,独一须要小心的标题就是确定保证使用了目录。随着数据量的充实,页数会进一层多,查看后几页的SQL就大概相像:复制代码 代码如下:select * from content order by id desc limit 10000, 10总之,就是越未来分页,LIMIT语句的偏移量就能越大,速度也会通晓变慢。那个时候,大家得以经过2种办法:一,子查询的分页情势来提升分页功能,飘易用的SQL语句如下:复制代码 代码如下:SELECT * FROM `content` WHERE id (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1State of Qatar OEscortDESportage BY id desc LIMIT $pagesize为啥会这样吧?因为子查询是在目录上完毕的,而经常的询问时在数据文件上成功的,平常来讲,索引文件要比数据文件小得多,所以操作起来也会更有作用。通过explain SQL语句开掘:子查询利用了目录!复制代码 代码如下:id select_type table type possible_keys key key_len ref rows Extra1 P本田UR-VIMATucsonY content range P奥迪Q7IMAQashqaiY PENCOREIMAHighlanderY 4 NULL 6264 Using where2 SUBQUELX570Y content index NULL P凯雷德IMAMuranoY 4 NULL 27085 Using index经过飘易的实地度量,使用子查询的分页情势的频率比纯LIMIT提升了14-20倍!二,JOIN分页格局复制代码 代码如下:select * FROM `content` AS t1JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1卡塔尔 AS t2WHERE t1.id通过自个儿的测验,join分页和子查询分页的功能基本在叁个阶段上,消耗的时间也基本一致。explain SQL语句:复制代码 代码如下:id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY system NULL NULL NULL NULL 11 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 Using where2 DERIVED content index NULL PRIMARY 4 NULL 27085 Using index三,使用MYSQL的FOUND_ROWS()函数Mysql FOUND_ROWS(State of Qatar函数结合SQL_CALC_FOUND_ROWS在SELECT中得以博得多少个结实:1. 赢得Limit的原委2. 获取去除Limit现在全部行数SELECT语句中时常恐怕用LIMIT限定再次来到行数。一时候可能想要知道如果没有LIMIT会重临多少行,但又不想再实践贰次形似语句。那么,在SELECT查询中包涵SQL_CALC_FOUND_ROWS选项,然后实行FOUND_ROWS(State of Qatar就足以了:复制代码 代码如下:select SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE id 100 LIMIT 10;SELECT FOUND_ROWS();其中SQL_CALC_FOUND_ROWS 告诉Mysql将sql所拍卖的行数记录下来,FOUND_ROWS(State of Qatar 则取到了那几个纪录。 即便也是三个语句,然则只举行了一回主查询,所以功能比原本要高超多。1. 就算在前一条语句中应用SQL_CALC_FOUND_ROWS选项,FOUND_ROWS(State of Qatar将回来第一条语句没有LIMIT时再次来到的行数。2. 一旦在前一条语句中未有选取SQL_CALC_FOUND_ROWS选项,FOUND_ROWS(卡塔尔国将赶回前一条语句实在重返的行数。若是利用 SELECT SQL_CALC_FOUND_ROWS,MySQL必需计算有所结果集的行数。就算那样,总比再实施二回不应用LIMIT的查询要快多了吧,因为这样结果集要回到客商端滴。复制代码 代码如下:-- 注意上边语句中的条件 LIKESELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE Name LIKE '%string%' id 100 LIMIT 10;SELECT FOUND_ROWS(卡塔尔国;复制代码 代码如下:-- 上边语句等价于上边语句,但质量方面应当进步特别丰硕的领会:SELECT COUNT(*) FROM tbl_name WHERE Name LIKE '%string%' ;SELECT * FROM tbl_name WHERE Name LIKE '%string%' id 100 LIMIT 10;

本文由9159金沙游艺场-奥门金沙游艺场-[欢迎您]发布于前端,转载请注明出处:MySQL高效分页解决方案集分享【9159金沙游艺场】

关键词:

纠正数据库目录

MySQL默认的数据文件存储目录/var/lib/mysql,现在要把目录修改为/home/data/mysqlcd /homemkdir data//在home目录下建data目录mysq...

详细>>

访问慢的解决方法9159金沙游艺场

1、更正本地化时间原理: 本地化时间格式化供给gettext帮衬,假诺你的意况没有展开此功效, 将会回来乱码, 影响#phpmya...

详细>>

linux下讲解MySQL安装与登录方法

Fedora5下配置MySQL (很有参考价值的 MySQL资料包括如何在linux文件系统移动MySQL数据库的位置) 一、下载MySQL安装文件 完全...

详细>>

VMware中Linux共享mysql数据库的方法

win7 +Navicat Lite 9+ VMware7 在VMware中安装openSUSE11.x mysql5 Navicat Lite89 9159金沙游艺场,VMware网络连接方式 桥接(Bridged) 两个重...

详细>>