久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql分頁查詢的示例

137次閱讀
沒有評論

共計 1459 個字符,預計需要花費 4 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章將為大家詳細講解有關 mysql 分頁查詢的示例,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

LIMIT 子句可以被用于強制 SELECT 語句返回指定的記錄數。LIMIT 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1)。下面,我們針對特例對 mysql 分頁查詢進行總結。

mysql 提供分頁的功能:

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

最簡單的用法就是:

select * from table limit ?,?

這種是最簡單的 limit 分頁查詢。配合 where 條件使用:

select * from table where column   ? order by id limit ?,?

上邊這種情況,建議在 column 和 id 建立復合索引比較好。 
以上兩種情況,對于小數據量分頁查詢時,這樣的 sql 就足夠用了。但是對于百萬級以上的數據表,如果使用上邊的 sql 的話,越往后 limit 語句的偏移量越來越大,查詢就會變得越來越慢。類似于:

select * from `user` where `cate`= 陜西  order by id limit 100000,10

為了避免這種查詢,我們可以通過子查詢的方式來提高查詢效率。

select * from `user` where id  =(select * from `user` where `cate`= 陜西  order by id limit 100000,1) and `cate`= 陜西  limit 10

通過 explain 我們可以看出直接 limit 查詢和通過子查詢的差距:

直接 limit 查詢:typepossible_keyskeykey_lenrefrowsExtraALL(NULL)(NULL)(NULL)(NULL)4076607 子查詢分頁查詢:typepossible_keyskeykey_lenrefrowsExtraPRIMARYrangePRIMARYPRIMARY42038331Using whereSUBQUERYindex(NULL)PRIMARY44076663Using index

可以看出,通過子查詢的方式,子查詢是在索引上進行的,而普通的查詢是在數據文件上進行的。通常來說,索引文件要比數據文件小的多,所以操作索引文件更直接高效。

此外,還可以通過 join 分頁方式

SELECT * FROM `user` AS t1 
JOIN (SELECT id FROM `user` ORDER BY id LIMIT 100000, 1) AS t2 
WHERE t1.id  = t2.id ORDER BY t1.id LIMIT 10;

join 分頁和子查詢分頁的效率基本在一個等級上。(但是,子查詢需要在內存中建立臨時表,查詢完畢后,MySQL 需要撤銷這些臨時表。通過 join 可以避免這種情況)在分頁查詢前,可以進行判斷,如果是在限定頁數內,就使用基本分頁查詢,大于則使用子查詢分頁處理。

關于“mysql 分頁查詢的示例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計1459字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 关岭| 诸暨市| 合山市| 阿图什市| 闻喜县| 泉州市| 抚松县| 达州市| 北海市| 齐齐哈尔市| 抚顺市| 囊谦县| 革吉县| 郎溪县| 文安县| 龙州县| 视频| 高密市| 棋牌| 天长市| 阳西县| 元阳县| 铁岭县| 翁牛特旗| 革吉县| 洛川县| 武功县| 施秉县| 曲阳县| 神农架林区| 三江| 沧源| 康保县| 印江| 华亭县| 呼图壁县| 巴中市| 安达市| 东乡族自治县| 汾阳市| 武威市|