欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

mysql千萬數(shù)據(jù)表Limit分頁查詢?nèi)绾蝺?yōu)化

本篇內(nèi)容介紹了“MySQL千萬數(shù)據(jù)表Limit分頁查詢?nèi)绾蝺?yōu)化”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的薩嘎網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

前言

在各類系統(tǒng)的表格類信息展示的功能中,經(jīng)常會(huì)用到“翻頁”這個(gè)操作,在頁面上每次只展示有限的數(shù)據(jù),需要看其他數(shù)據(jù)的時(shí)候則像翻書一樣翻到后面的“頁”。在 MySQL 支持的 SQL 語法中對(duì)此有特殊的支持,開發(fā)人員在實(shí)現(xiàn)這類功能的時(shí)候很方便:

  • select*fromxxx limit M,N

  • select*fromxxx limit N offset M

這兩類語法代表的意思是一樣的:返回從第 M 開始(不包括這一行)之后的 N 行數(shù)據(jù)。雖然使用起來很方便,但是這類語句存在查詢性能上的陷阱,需要特別注意一下。 

原理簡介

在解釋原理之前,先看一下實(shí)際的效果,看看這個(gè)“性能的陷阱”是什么。

mysql千萬數(shù)據(jù)表Limit分頁查詢?nèi)绾蝺?yōu)化

兩個(gè)語句的內(nèi)容都非常簡單,差別只在 limit 的部分,第一個(gè)語句跳過的行數(shù)很少,第二個(gè)語句跳過的行數(shù)很多,結(jié)果是兩個(gè)語句的執(zhí)行時(shí)間差了至少 200 倍。PS:limit 配合 order by 使用是一個(gè)好習(xí)慣,確保結(jié)果數(shù)據(jù)是穩(wěn)定的。

可以看到跳過的行數(shù)大幅度增長時(shí),SQL 語句的執(zhí)行時(shí)間也會(huì)快速增長,原因其實(shí)比較簡單:在處理 limit M,N 的時(shí)候,MySQL 會(huì)先拿到 M+N 行結(jié)果數(shù)據(jù),然后再丟棄 M 行數(shù)據(jù),展示之后剩下的 N 行數(shù)據(jù)。所以上圖的第二個(gè)語句實(shí)際上掃描了 800 多萬行數(shù)據(jù),然后丟棄了 800 萬行數(shù)據(jù),只展示之后的 1 行結(jié)果。

利用[慢查詢分析三部曲][Link 1]的方法嘗試排查一下,explain 和 optimizer_trace 都看不出來差別,但是 profile 里面能看出來兩者的差距:

mysql千萬數(shù)據(jù)表Limit分頁查詢?nèi)绾蝺?yōu)化    

雖然都只輸出一行結(jié)果,但是在 Sending data 階段花費(fèi)的時(shí)間差別很大,其實(shí)就是花在掃描 800 萬行數(shù)據(jù)上去了。 

優(yōu)化策略

針對(duì)這個(gè)問題,其實(shí)有一個(gè)比較通用的優(yōu)化思路:利用 join,先根據(jù)主鍵搜索到需要的數(shù)據(jù),再通過主鍵關(guān)聯(lián)到原來的表輸出結(jié)果。SQL 可以改寫一下:

mysql千萬數(shù)據(jù)表Limit分頁查詢?nèi)绾蝺?yōu)化

SQL 改寫的效果

可以看到查詢時(shí)間降到了 1.5s 左右,提升了約 37%,看起來還可以,那么還有其他的辦法么?

顯然還是有的,不過這會(huì)要求表有自增主鍵。在分頁查詢的時(shí)候,記錄上一次查詢結(jié)果中的主鍵,然后在 where 條件中添加主鍵的范圍約束。以上面的查詢?yōu)槔?,上次分頁查詢時(shí)的主鍵是 8000001,那么下次分頁的時(shí)候,where 條件中添加一個(gè)主鍵約束:id>8000001,再來看看查詢效果:

mysql千萬數(shù)據(jù)表Limit分頁查詢?nèi)绾蝺?yōu)化

添加條件之后的效果

可以發(fā)現(xiàn)利用主鍵來篩選掉上一次分頁前的所有數(shù)據(jù)后再用 limit,查詢基本是馬上返回結(jié)果的。不過要特別注意,這種方法是根據(jù)主鍵的順序先做了一次篩選,不一定會(huì)適用于所有的業(yè)務(wù)場景,理論上 UUID 類的主鍵也可以用,但是改造 SQL 前務(wù)必確保查詢結(jié)果是符合預(yù)期的。

“mysql千萬數(shù)據(jù)表Limit分頁查詢?nèi)绾蝺?yōu)化”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

標(biāo)題名稱:mysql千萬數(shù)據(jù)表Limit分頁查詢?nèi)绾蝺?yōu)化
本文鏈接:http://aaarwkj.com/article40/jegpeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名微信公眾號(hào)、搜索引擎優(yōu)化App開發(fā)、電子商務(wù)、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
精品人妻av区天天看片| 亚洲精品成人免费电影| 国产精品一区二区国产激情久久| 黄色片一区二区三区四区| 亚洲成人日韩欧美在线| 麻豆国产免费av在线| 亚洲成av人的天堂在线观看女人| 日本道欧美一区二区aaaa| 国产大学生情侣在线视频| 免费观看国内性生活大片| 亚洲av成人三区国产精品| 最新中文字幕成人在线观看| 加勒比在线观看欧美一区| 日韩欧美一区二区三级| 中文字幕人妻中文av不卡专区| 亚洲天堂岛av一区二区| 美女高潮啪啪啪91| 免费黄色一区二区三区| 国产精品久久一级黄片| 蜜臀av中文字幕亚洲| 日韩不卡在线免费观看视频| 日韩欧美一区精品在线观看| 国产福利传媒在线观看| 欧美精品一区二区三区乱码| 久久精品中文字幕有码日本道| 国产精品一区二区av不卡| 久久se精品一区精品二区国产| 日本免费的高清一区二区| 亚洲男人天堂在线播放| 日本午夜理论视频在线播放| 亚洲欧美半夜激情一区二区| 色哟哟亚洲精品一区二区| 国产成人精品一二三四区| 国内校园性猛交视频网站| 日韩一级片精品视频在线| 久草午夜福利视频免费观看| 蜜臀午夜精品视频在线观看| 中文字幕日韩精品国产| 黄色片在线观看中文字幕| 国产不卡的视频在线观看| 色综合色很天天综合色|