欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySql中深度分頁(yè)的問(wèn)題處理

 更新時(shí)間:2024年05月07日 11:00:18   作者:天青色等煙雨z  
這篇文章主要介紹了MySql中深度分頁(yè)的問(wèn)題處理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

什么是深度分頁(yè)?

MySql深度分頁(yè)的問(wèn)題,就是比如我們需要所查詢(xún)出的表數(shù)據(jù)量較大,需要進(jìn)行查詢(xún)結(jié)果返回集的后面部分,所出現(xiàn)的性能問(wèn)題。

比如說(shuō)我們有一個(gè)一百萬(wàn)數(shù)據(jù)量的表,我們分頁(yè)需要查詢(xún)99990,10,數(shù)據(jù)庫(kù)通常情況下會(huì)先掃描前99990條數(shù)據(jù), 再進(jìn)行分頁(yè)返回最后10條,這樣就會(huì)導(dǎo)致查詢(xún)接口性能變慢,隨著OFFSET值的增大,查詢(xún)性能會(huì)顯著下降。

這是因?yàn)镸ySQL需要掃描從第一條記錄到OFFSET指定的位置,然后返回LIMIT數(shù)量的結(jié)果,這在大數(shù)據(jù)集中會(huì)導(dǎo)致大量的磁盤(pán)I/O操作和較慢的查詢(xún)響應(yīng)時(shí)間。

解決方案

1. 子查詢(xún)過(guò)濾主鍵ID

因?yàn)镸ysql中主鍵ID數(shù)據(jù)聚集索引,所有的數(shù)據(jù)都存儲(chǔ)在該節(jié)點(diǎn)的葉子節(jié)點(diǎn)上,所以如果我們使用了ID過(guò)濾條件

MySQL就會(huì)跳過(guò)前面的索引,也就不會(huì)掃描前方的數(shù)據(jù),進(jìn)行一個(gè)高效的過(guò)濾查詢(xún)

其實(shí)這也就是利用InndeDB中主鍵索引的優(yōu)點(diǎn),但是這有一個(gè)前提的咱們的主鍵ID必須是自增ID

SELECT * FROM table_name
2WHERE id >= (SELECT id FROM table_name ORDER BY some_column LIMIT 100000, 1)
3ORDER BY some_column LIMIT 10;

2. 基于子查詢(xún)進(jìn)行優(yōu)化

SELECT a.* FROM table_name a inner join (
select
 id
from 
table_name
where name="**"
order by id 
limit 10000 10
) b on a.id=b.id

在InndeDB中,子查詢(xún)中name是索引的情況下是不需要回表的

當(dāng)基于我們需要范圍ID中能快速找出我們所需要對(duì)應(yīng)的數(shù)據(jù),深度分頁(yè)帶來(lái)的性能問(wèn)題也能游刃而解

且這種方式是返回的具體的ID集合,不僅快而且數(shù)據(jù)量也是我們指定

3. 倒序分頁(yè)

如果數(shù)據(jù)是按時(shí)間戳或其他遞增字段排序的,可以考慮倒序查詢(xún)

即先找出最大的ID,然后逐步往前查,這在某些場(chǎng)景下可以提高效率

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL索引類(lèi)型總結(jié)和使用技巧以及注意事項(xiàng)

    MySQL索引類(lèi)型總結(jié)和使用技巧以及注意事項(xiàng)

    索引是快速搜索的關(guān)鍵。MySQL索引的建立對(duì)于MySQL的高效運(yùn)行是很重要的。下面介紹幾種常見(jiàn)的MySQL索引類(lèi)型
    2014-04-04
  • mysql found_row()使用詳解

    mysql found_row()使用詳解

    在參考手冊(cè)中對(duì)found_rows函數(shù)的描述是: it is desirable to know how many rows the statement would have returned without the LIMIT. 也就是說(shuō),它返回值是如果SQL語(yǔ)句沒(méi)有加LIMIT的情況下返回的數(shù)值。
    2016-05-05
  • MySQL同步Elasticsearch的6種方案小結(jié)

    MySQL同步Elasticsearch的6種方案小結(jié)

    在分布式架構(gòu)中,MySQL與Elasticsearch(ES)的協(xié)同已成為解決高并發(fā)查詢(xún)與復(fù)雜檢索的標(biāo)配組合,本文整理了MySQL同步ES的6種主流方案,大家可以根據(jù)自己的需要進(jìn)行選擇
    2025-05-05
  • 在Linux環(huán)境下mysql的root密碼忘記解決方法(三種)

    在Linux環(huán)境下mysql的root密碼忘記解決方法(三種)

    這篇文章主要介紹了在Linux環(huán)境下mysql的root密碼忘記解決方法,詳細(xì)的介紹了3種解決辦法,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • MYSQL8.0.13免安裝版配置教程實(shí)例詳解

    MYSQL8.0.13免安裝版配置教程實(shí)例詳解

    這篇文章主要介紹了MYSQL8.0.13免安裝版 配置教程,本文是以8.0為例,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-12-12
  • windows下MySQL數(shù)據(jù)庫(kù)移動(dòng)到其它盤(pán)

    windows下MySQL數(shù)據(jù)庫(kù)移動(dòng)到其它盤(pán)

    大家好,本篇文章主要講的是windows下MySQL數(shù)據(jù)庫(kù)移動(dòng)到其它盤(pán),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏
    2021-12-12
  • mysql報(bào)錯(cuò)RSA?private?key?file?not?found的解決方法

    mysql報(bào)錯(cuò)RSA?private?key?file?not?found的解決方法

    當(dāng)MySQL報(bào)錯(cuò)RSA?private?key?file?not?found時(shí),可能是由于MySQL的RSA私鑰文件丟失或者損壞導(dǎo)致的,此時(shí)可以重新生成RSA私鑰文件,以解決這個(gè)問(wèn)題
    2023-06-06
  • MySQL數(shù)據(jù)庫(kù)優(yōu)化的六種方式總結(jié)

    MySQL數(shù)據(jù)庫(kù)優(yōu)化的六種方式總結(jié)

    關(guān)于數(shù)據(jù)庫(kù)優(yōu)化,網(wǎng)上有不少資料和方法,但是不少質(zhì)量參差不齊,所以下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)優(yōu)化的六種方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • MySQL全局共享內(nèi)存介紹

    MySQL全局共享內(nèi)存介紹

    這篇文章主要介紹了MySQL全局共享內(nèi)存介紹,全局共享內(nèi)存則主要是 MySQL Instance(mysqld進(jìn)程)以及底層存儲(chǔ)引擎用來(lái)暫存各種全局運(yùn)算及可共享的暫存信息,如存儲(chǔ)查詢(xún)緩存的 Query Cache,緩存連接線程的 Thread Cache等等,需要的朋友可以參考下
    2014-12-12
  • VMware中Linux共享mysql數(shù)據(jù)庫(kù)的方法

    VMware中Linux共享mysql數(shù)據(jù)庫(kù)的方法

    VMware中Linux共享mysql數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考下。
    2010-11-11

最新評(píng)論