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

詳解mysql中的冗余和重復(fù)索引

 更新時間:2017年10月18日 09:58:06   作者:尋找風(fēng)口的豬  
這篇文章主要介紹了詳解mysql中的冗余和重復(fù)索引,小編覺得挺不錯的,這里給大家分享下,供需要的朋友參考。

mysql允許在相同列上創(chuàng)建多個索引,無論是有意還是無意,mysql需要單獨維護重復(fù)的索引,并且優(yōu)化器在優(yōu)化查詢的時候也需要逐個地進行考慮,這會影響性能。

  重復(fù)索引是指的在相同的列上按照相同的順序創(chuàng)建的相同類型的索引,應(yīng)該避免這樣創(chuàng)建重復(fù)索引,發(fā)現(xiàn)以后也應(yīng)該立即刪除。但,在相同的列上創(chuàng)建不同類型的索引來滿足不同的查詢需求是可以的。

CREATE TABLE test(
 ID INT NOT NULL PRIMARY KEY,
 A INT NOT NULL,
 B INT NOT NULL,
 UNIQUE(ID),
 INDEX(ID),
) ENGINE=InnoDB;

這段SQL創(chuàng)建了3個重復(fù)索引。通常并沒有理由這么做。

  冗余索引和重復(fù)索引有一些不同,如果創(chuàng)建了索引(a,b),再創(chuàng)建索引(a)就是冗余索引,因為這只是前面一個索引的前綴索引,因此(a,b)也可以當(dāng)作(a)來使用,但是(b,a)就不是冗余索引,索引(b)也不是,因為b不是索引(a,b)的最左前綴列,另外,其他不同類型的索引在相同列上創(chuàng)建(如哈希索引和全文索引)不會是B-Tree索引的冗余索引,而無論覆蓋的索引列是什么。

  冗余索引通常發(fā)生再為表添加新索引的時候。例如,有人可能會增加一個新的索引(A,B)而不是擴展以后的索引(A)。還有一種情況是將一個索引擴展為(A,ID),其中ID是主鍵,對于InnoDB來說主鍵已經(jīng)包含在二級索引中了,所以這也是冗余的。

  大多數(shù)情況下都不需要冗余索引,應(yīng)該盡量擴展已有的索引而不是創(chuàng)建新索引,但也有時候處于性能方面的考慮需要冗余索引,因為擴展已有的索引會導(dǎo)致其變得太大,從而影響其他使用該索引的查詢性能。如:如果在整數(shù)列上有一個索引,現(xiàn)在需要額外增加一個很長的varchar列來擴展該索引,那么性可能會急劇下降,特別是有查詢把這個索引當(dāng)作覆蓋索引,或者這是myisam表并且有很多范圍查詢的時候(由于myisam的前綴壓縮)

  比如,有一張userinfo表。這個表有1000000條數(shù)據(jù),對每個state_id值大概有20000條記錄。在state_id有一個索引,那么下面的SQL我們稱之為Q1

SELECT count(*) FROM userinfo WHERE state_id=5; --Q1

改查詢的執(zhí)行速度大概是每秒115次(QPS)

  還有一個SQL,我們稱之為Q2

SELECT state_id,city,address FROM userinfo WHERE state_id=5; --Q2

這個查詢的QPS是10,提升該索引性能最簡單的辦法就是狂戰(zhàn)索引為(state_id,city,address),讓索引能覆蓋查詢:

ALERT TABLE userinfo ADD KEY state_id_2(state_id,city,address);

注:state_id已經(jīng)有索引了,根據(jù)前面的概念,這是一個冗余索引而不是重復(fù)索引)

怎么找出冗余索引和重復(fù)索引呢?

1.可以使用Shlomi Noach的common_schema中的一些試圖來定位,common_schema是一系列可以安裝到服務(wù)器上的常用的存儲和試圖。

2.可以使用Percona Toolkit中的pt_duplicate-key-checker,該工具通過分析表結(jié)構(gòu)來找出冗余和重復(fù)的索引。

總結(jié)

以上就是本文關(guān)于詳解mysql中的冗余和重復(fù)索引的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以參閱:幾個比較重要的MySQL變量簡述Redis和MySQL的區(qū)別、MYSQL子查詢和嵌套查詢優(yōu)化實例解析等,如有不足之處,歡迎留言指出,小編會及時回復(fù)大家并進行修改,感謝朋友們對本站的支持!

相關(guān)文章

  • MySQL+Redis緩存+Gearman共同構(gòu)建數(shù)據(jù)庫緩存的方法

    MySQL+Redis緩存+Gearman共同構(gòu)建數(shù)據(jù)庫緩存的方法

    這篇文章主要介紹了MySQL+Redis緩存+Gearman共同構(gòu)建數(shù)據(jù)庫緩存,部署后在MySQL端進行創(chuàng)建一個用戶給與遠(yuǎn)程登錄權(quán)限,使得Redis作為緩存可以用來同步數(shù)據(jù)使用,需要的朋友可以參考下
    2022-10-10
  • Mysql的數(shù)據(jù)庫遷移到另一個機器上的方法詳解

    Mysql的數(shù)據(jù)庫遷移到另一個機器上的方法詳解

    今天小編就為大家分享一篇關(guān)于Mysql的數(shù)據(jù)庫遷移到另一個機器上的方法詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Linux下mysql 5.6.17 安裝圖文教程

    Linux下mysql 5.6.17 安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了Linux下mysql 5.6.17 安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • MySQL性能分析工具profile使用教程

    MySQL性能分析工具profile使用教程

    這篇文章主要介紹了MySQL性能分析工具profile使用教程,本文描述了如何使用MySQL profile,不涉及具體的樣例分析,需要的朋友可以參考下
    2014-10-10
  • mysql 開放外網(wǎng)訪問權(quán)限的方法

    mysql 開放外網(wǎng)訪問權(quán)限的方法

    今天小編就為大家分享一篇mysql 開放外網(wǎng)訪問權(quán)限的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • MySQL數(shù)據(jù)庫數(shù)據(jù)刪除操作詳解

    MySQL數(shù)據(jù)庫數(shù)據(jù)刪除操作詳解

    本文我們將要學(xué)習(xí)的是作為刪除數(shù)據(jù)使用的?“DELETE”?語句,“DELETE”?語句是用來刪除數(shù)據(jù)的,它不能用來刪除數(shù)據(jù)表本身。刪除數(shù)據(jù)表使用的是?“DROP”?語句,而?“DELETE”?的作用只是用來刪除記錄而已
    2022-08-08
  • mysql中鎖機制的最全面講解

    mysql中鎖機制的最全面講解

    大概幾個月之前項目中用到事務(wù),需要保證數(shù)據(jù)的強一致性,期間也用到了mysql的鎖,所以本文打算總結(jié)一下mysql的鎖機制,這篇文章主要給大家介紹了關(guān)于mysql中鎖機制的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • mysql執(zhí)行計劃介紹

    mysql執(zhí)行計劃介紹

    下面我簡單講講mysql的執(zhí)行計劃,只列出了一些常見的情況,希望對大家有所幫助
    2013-11-11
  • MySQL實例精講單行函數(shù)以及字符數(shù)學(xué)日期流程控制

    MySQL實例精講單行函數(shù)以及字符數(shù)學(xué)日期流程控制

    SQL函數(shù)即數(shù)據(jù)庫的內(nèi)置函數(shù),可以運用在SQL語句中實現(xiàn)特定的功能。SQL單行函數(shù)對于每一行數(shù)據(jù)進行計算后得到一行輸出結(jié)果。SQL單行函數(shù)根據(jù)數(shù)據(jù)類型分為字符函數(shù)、數(shù)字函數(shù)、日期函數(shù)、轉(zhuǎn)換函數(shù),另外還有一些別的函數(shù)
    2021-10-10
  • MySQL中的啟動和關(guān)閉命令

    MySQL中的啟動和關(guān)閉命令

    這篇文章主要介紹了MySQL中的啟動和關(guān)閉命令,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論

隆安县| 定结县| 三原县| 巴东县| 凤冈县| 枣阳市| 广昌县| 松江区| 新闻| 哈密市| 武义县| 专栏| 孟津县| 睢宁县| 太湖县| 邵阳县| 建昌县| 剑阁县| 新和县| 仙居县| SHOW| 巨鹿县| 会昌县| 衡南县| 忻城县| 安龙县| 中宁县| 金山区| 楚雄市| 苏州市| 禹州市| 长岛县| 南川市| 南阳市| 江川县| 四川省| 开江县| 镇坪县| 阳城县| 德清县| 瑞金市|