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

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人妻精品一区二| 国产精品亚洲精品欧美| 亚洲精品露脸自拍高清在线观看| 99久久精品免费国产一区| 国产女主播在线观看一区| 亚洲精品国产av成人网| 视频一二区免费在线观看| 国产美女主播一二三区| 亚洲av香蕉一区二区| 亚洲精品一区二区三区小| 久久精品国产亚洲av麻豆尤物| 欧美一区二区欧美精品| 日本一级a级黄免视频| 久热精品视频在线观看| 日韩 欧美 国产 亚洲 综合| 亚洲另类偷拍校园伦理| 少妇高潮试看二十分钟| 国产女主播精品视频一区| 欧美精品日韩中文字幕在| 国产91人妻精品一区二区三区| 亚洲欧美另类熟女丝袜| 亚洲色图综合在线观看| 色综合色狠狠天天综合色| 精品啪在线观看国产熟女| 一区二区三区日本在线观看| 国产黄片一区二区不卡| 一区二区三区人妻av| 国产白丝扒开做爽爽爽网站|