最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql索引覆蓋實例分析

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

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

索引覆蓋

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

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

這里寫圖片描述

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

這里寫圖片描述

select price from t15 where cat_id = 1;

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

這里寫圖片描述

假設我們用這樣的查詢語句:

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

查詢分析:

這里寫圖片描述

首先看一下Extra,這里有Using index,說明這里使用到了索引覆蓋,而possible_keys為NULL的原因是因為,使用到了mysql中的函數(shù),所以在查詢的時候并沒有使用到email索引,但是key卻為email,表示了使用到了索引進行排序,不信我把數(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非常快

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

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

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

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

推斷:

(1)表如果是myisam引擎,2個語句,速度不會有明顯差異.
(2)innodb表因為聚簇索引,id索引要在磁盤上跨N多塊,導致速度慢.
(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ù),然后進行測試,測試結(jié)果如下,我們的推論是正確的。

這里寫圖片描述

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

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

相關文章

  • mysql5.7 新增的json字段類型用法實例分析

    mysql5.7 新增的json字段類型用法實例分析

    這篇文章主要介紹了mysql5.7 新增的json字段類型用法,結(jié)合實例形式分析了mysql5.7 新增的json字段類型具體功能、使用方法及操作注意事項,需要的朋友可以參考下
    2020-02-02
  • 更改MySQL數(shù)據(jù)庫的編碼為utf8mb4問題

    更改MySQL數(shù)據(jù)庫的編碼為utf8mb4問題

    這篇文章主要介紹了更改MySQL數(shù)據(jù)庫的編碼為utf8mb4問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • MySQL中使用FREDATED引擎實現(xiàn)跨數(shù)據(jù)庫服務器、跨實例訪問

    MySQL中使用FREDATED引擎實現(xiàn)跨數(shù)據(jù)庫服務器、跨實例訪問

    這篇文章主要介紹了MySQL中使用FREDATED引擎實現(xiàn)跨數(shù)據(jù)庫服務器、跨實例訪問,本文講解了FEDERATED存儲引擎的描述、安裝與啟用FEDERATED存儲引擎、準備遠程服務器環(huán)境等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • mysql多次調(diào)用存儲過程的問題

    mysql多次調(diào)用存儲過程的問題

    這個問題也困擾了我很長時間,準確的說正是因為他的存儲過程無法在同一連接中2次或者多次執(zhí)行,我大幅修該了程序架構(gòu),全部題換成了sql,但是畢竟sql無法執(zhí)行有相當邏輯的代碼,最總讓我從新測試以求尋找解決之道。
    2011-05-05
  • Mysql 自動增加設定基值的語句

    Mysql 自動增加設定基值的語句

    有時候需要為自動增加的字段設置基值,用下面的語句即可。
    2010-11-11
  • mysql 跨表查詢、更新、刪除示例

    mysql 跨表查詢、更新、刪除示例

    這篇文章主要介紹了mysql 跨表查詢、更新、刪除,需要的朋友可以參考下
    2014-03-03
  • sql在一個表中添加字段并添加備注的方法

    sql在一個表中添加字段并添加備注的方法

    在本篇文章里小編給大家分享了sql在一個表中添加字段并添加備注的方法的內(nèi)容,有需要的朋友們可以參考學習下。
    2019-08-08
  • MySQL學習之完整性約束詳解

    MySQL學習之完整性約束詳解

    數(shù)據(jù)完整性指的是數(shù)據(jù)的一致性和正確性。完整性約束是指數(shù)據(jù)庫的內(nèi)容必須隨時遵守的規(guī)則。本文就來為大家講講MySQL中的完整性約束,需要的可以參考一下
    2022-08-08
  • MySQL數(shù)據(jù)庫常用操作技巧總結(jié)

    MySQL數(shù)據(jù)庫常用操作技巧總結(jié)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫常用操作技巧,結(jié)合實例形式總結(jié)分析了mysql查詢、存儲過程、字符串截取、時間、排序等常用操作技巧,需要的朋友可以參考下
    2018-03-03
  • 使MySQL能夠存儲emoji表情字符的設置教程

    使MySQL能夠存儲emoji表情字符的設置教程

    這篇文章主要介紹了使MySQL能夠存儲emoji表情字符的設置教程,關鍵在于utf8mb4字符集的設置,需要的朋友可以參考下
    2015-12-12

最新評論

大安市| 三穗县| 浑源县| 邵武市| 兴安县| 当雄县| 堆龙德庆县| 施秉县| 马尔康县| 罗平县| 南江县| 得荣县| 蒙自县| 察隅县| 桂东县| 虹口区| 江城| 竹北市| 贡嘎县| 宿松县| 阜平县| 麻城市| 莱芜市| 涟水县| 保山市| 安徽省| 文成县| 家居| 永善县| 方正县| 筠连县| 沧州市| 石阡县| 满洲里市| 汉中市| 峡江县| 广安市| 新宾| 江安县| 红桥区| 临澧县|