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

mysql索引覆蓋實(shí)例分析

 更新時間:2019年07月11日 11:22:49   作者:webbc  
這篇文章主要介紹了mysql索引覆蓋,簡單說明了索引覆蓋的概念,并結(jié)合實(shí)例形式分析了mysql索引覆蓋的相關(guān)應(yīng)用與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了mysql索引覆蓋。分享給大家供大家參考,具體如下:

索引覆蓋

如果查詢的列恰好是索引的一部分,那么查詢只需要在索引文件上進(jìn)行,不需要回行到磁盤再找數(shù)據(jù)。這種查詢速度非???稱為“索引覆蓋”。

假設(shè)有一張t15表,在表中建立了一個聯(lián)合索引:cp(cat_id,price)

這里寫圖片描述

當(dāng)我們使用下面的sql語句,會出現(xiàn)索引覆蓋的情況。不信我們可以來查看一下,這里的Extra中顯示了Using index,表示這條sql語句剛好用到了索引覆蓋。

這里寫圖片描述

select price from t15 where cat_id = 1;

在來看一題,創(chuàng)建一張t11表,在email列有一個索引

這里寫圖片描述

假設(shè)我們用這樣的查詢語句:

select eamil from  t11 where right(email,4)='.com'

查詢分析:

這里寫圖片描述

首先看一下Extra,這里有Using index,說明這里使用到了索引覆蓋,而possible_keys為NULL的原因是因?yàn)?,使用到了mysql中的函數(shù),所以在查詢的時候并沒有使用到email索引,但是key卻為email,表示了使用到了索引進(jìn)行排序,不信我把數(shù)據(jù)打印看看。

這里寫圖片描述

這里的數(shù)據(jù)是經(jīng)過排序的。原本的數(shù)據(jù)是這樣的。

這里寫圖片描述

索引覆蓋的問題

create table A (
id varchar(64) primary key,
ver int,
…
)

表中有幾個很長的字段varbinary(3000) ,在id、ver上有聯(lián)合索引 ,共10000條數(shù)據(jù)

為什么select id from A order by id特別慢?
select id from A order by id,ver非???/p>

疑問: id, (id,ver)都有索引, select id 應(yīng)該都產(chǎn)生”索引覆蓋”的效果,為什么前者慢,而后快?

思路:innodb聚簇與myisam索引的不同 , 索引覆蓋 這2個角度來考慮

(1)假設(shè)此表使用的是Myisam的索引,那么這兩條sql語句都不需要回行查找數(shù)據(jù),那么他們的速度應(yīng)該差不多。

(2)假設(shè)此表使用的是InnoDB的索引,那么select id from A order by id這句sql使用到了主鍵索引,因?yàn)镮nnoDB的每個主鍵都掛載這每行的數(shù)據(jù),并且本題中還有幾個特別大的字段,所以會在查找id的時候需要走的相對慢;而select id from A order by id,ver這句sql使用到了id,ver聯(lián)合索引,在InnoDB存儲引擎中,次索引保存的是對主鍵索引的應(yīng)用,所以次索引不掛載該行的數(shù)據(jù),那么在(id,ver)索引中查找id會快,當(dāng)找到對應(yīng)的節(jié)點(diǎn)樹時,只需要再次查找到主鍵索引的位置,即可拿到該行的數(shù)據(jù),這樣比較快。

推斷:

(1)表如果是myisam引擎,2個語句,速度不會有明顯差異.
(2)innodb表因?yàn)榫鄞厮饕?id索引要在磁盤上跨N多塊,導(dǎo)致速度慢.
(3)即使innodb引擎,如果沒有那幾個varbinay長列, 2個語句的速度也不會有明顯差異.

t12表,存儲引擎為MyISAM,有主鍵索引和(id,ver)符合索引,還有幾個大的變長字段,測試推論1

這里寫圖片描述

t13表,存儲引擎為InnoDB,有主鍵索引和(id,ver)符合索引,還有幾個大的變長字段推論2

這里寫圖片描述

t14表,存儲引擎為InnoDB,有主鍵索引和(id,ver)符合索引,沒有幾個大的變長字段推論3

這里寫圖片描述

t12,t13,t14每張表中都有1W條數(shù)據(jù),然后進(jìn)行測試,測試結(jié)果如下,我們的推論是正確的。

這里寫圖片描述

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL索引操作技巧匯總》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總

希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。

相關(guān)文章

  • MySQL8.4一主一從環(huán)境搭建實(shí)現(xiàn)

    MySQL8.4一主一從環(huán)境搭建實(shí)現(xiàn)

    本文主要介紹了MySQL8.4一主一從環(huán)境搭建實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • MySQL索引失效的典型案例

    MySQL索引失效的典型案例

    索引在我們使用MySQL數(shù)據(jù)庫時可以極大的提高查詢效率,然而,有時候因?yàn)槭褂蒙系囊恍╄Υ镁蜁?dǎo)致索引的失效,無法達(dá)到我們使用索引的預(yù)期效果,今天介紹一種MySQL中幾種常見的索引失效的原因,可以在以后的工作中盡可能避免因索引失效帶來的坑。
    2021-06-06
  • MySQL order by與group by查詢優(yōu)化實(shí)現(xiàn)詳解

    MySQL order by與group by查詢優(yōu)化實(shí)現(xiàn)詳解

    order by 子句盡量使用index方式排序(即using index),避免使用filesort方式排序(即using filesort)。Index方式效率高,它指MySQL掃描索引本身完成排序,filesort則效率低
    2022-11-11
  • mysql 關(guān)鍵詞相關(guān)度排序方法詳細(xì)示例分析

    mysql 關(guān)鍵詞相關(guān)度排序方法詳細(xì)示例分析

    以下是對mysql關(guān)鍵詞相關(guān)度排序方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • 88秒插入1000萬條數(shù)據(jù)到MySQL數(shù)據(jù)庫表的操作方法

    88秒插入1000萬條數(shù)據(jù)到MySQL數(shù)據(jù)庫表的操作方法

    這篇文章主要介紹了88秒插入1000萬條數(shù)據(jù)到MySQL數(shù)據(jù)庫表的操作方法,首先給大家說下我用到的數(shù)據(jù)庫表為mysql數(shù)據(jù)庫5.7版本的。具體操作方法大家跟隨小編一起通過本文學(xué)習(xí)吧
    2018-11-11
  • MySQL中的性別字段到底加不加索引

    MySQL中的性別字段到底加不加索引

    這篇文章主要介紹了MySQL中的性別字段到底加不加索引問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • mysqli預(yù)處理編譯的深入理解

    mysqli預(yù)處理編譯的深入理解

    記得以前寫過mysqli的預(yù)處理的php教程,現(xiàn)在整理一下,需要的朋友可以參考
    2012-12-12
  • 使用MySQL實(shí)現(xiàn)高效的用戶昵稱模糊搜索

    使用MySQL實(shí)現(xiàn)高效的用戶昵稱模糊搜索

    在大型系統(tǒng)中,用戶表中的昵稱字段需要支持高效的模糊搜索,并且必須處理包含特殊字符的查詢,本文將介紹一種在MySQL中實(shí)現(xiàn)高效模糊搜索的解決方案,能夠支持特殊字符,并且利用MySQL自身的全文索引機(jī)制來優(yōu)化搜索性能,需要的朋友可以參考下
    2024-05-05
  • MySQL 數(shù)據(jù)庫 索引和事務(wù)

    MySQL 數(shù)據(jù)庫 索引和事務(wù)

    這篇文章主要介紹了MySQL 數(shù)據(jù)庫 索引和事務(wù),索引是為了加速對表中數(shù)據(jù)行的檢索而創(chuàng)建的一種分散的存儲結(jié);事物是屬于計算機(jī)中一個很廣泛的概念,一般是指要做的或所做的事情,下面我們就一起進(jìn)入文章了解具體內(nèi)容吧
    2021-12-12
  • mysql免安裝制作使用說明

    mysql免安裝制作使用說明

    mysql免安裝版本的制作方法,需要的朋友可以參考下。
    2010-08-08

最新評論