91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中冗余和重復索引的區別及作用

發布時間:2020-06-08 15:02:03 來源:PHP中文網 閱讀:330 作者:三月 欄目:MySQL數據庫

下面講講關于mysql中冗余和重復索引的區別及作用,文字的奧妙在于貼近主題相關。所以,閑話就不談了,我們直接看下文吧,相信看完mysql中冗余和重復索引的區別及作用這篇文章你一定會有所受益。

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

  重復索引是指的在相同的列上按照相同的順序創建的相同類型的索引,應該避免這樣創建重復索引,發現以后也應該立即刪除。但,在相同的列上創建不同類型的索引來滿足不同的查詢需求是可以的。


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

  這段SQL創建了3個重復索引。通常并沒有理由這么做。

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

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

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

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


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

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

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


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

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


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

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

怎么找出冗余索引和重復索引呢?

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

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

對于以上mysql中冗余和重復索引的區別及作用相關內容,大家還有什么不明白的地方嗎?或者想要了解更多相關,可以繼續關注我們的行業資訊板塊。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新乡县| 天柱县| 泰来县| 吴江市| 南部县| 双流县| 盐亭县| 海盐县| 庆城县| 西平县| 芮城县| 福泉市| 北宁市| 微山县| 酉阳| 遂昌县| 文昌市| 舒城县| 上思县| 磐石市| 漳浦县| 武平县| 井冈山市| 吉隆县| 自贡市| 华阴市| 英德市| 大方县| 什邡市| 普定县| 民权县| 常熟市| 锡林浩特市| 新宁县| 铁岭县| 山阳县| 阜宁县| 乌兰县| 高安市| 循化| 东宁县|