檢查mysql數據庫中重復和冗余的索引:MysqlDoubleIndex

jopen 9年前發布 | 10K 次閱讀 MySQL 數據庫服務器 MysqlDoubleIndex

TODO: 檢查mysql數據庫中重復和冗余的索引

Doc

冗余和重復索引的概念:

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

重復索引:是指在相同的列上按照相同的順序創建的相同類型的索引。應該避免這樣創建重復索引,發現后也應該立即移除。

冗余索引:冗余索引和重復索引有一些不同,如果創建了索引(A,B),再創建索引(A)就是冗余索引,因為這只是前一個索引的前綴索引。因此索引 (A,B)也可以當索引(A)來使用(這種冗余只是對B-Tree索引來說)。冗余索引通常發生在為表添加新索引的時候。例如,有人可能會增加一個新的索引(A,B)而不是擴展已有的索引(A)。還有一種情況是將一個索引擴展為(A,ID),其中ID是主鍵,對于InnoDB來說主鍵列已經包含在二級索引中了,索引也是冗余的。

大多數的情況下都不需要冗余索引,應該盡量擴展已有的索引而不是創建新索引。但也有時候出于性能方面的考慮需要冗余索引,因為擴展已有的索引會導致其變得太大,從而影響其它使用該索引的查詢的性能。

Installation

Add this line to your application's Gemfile:

gem 'mysql_double_index'

And then execute:

$ bundle

Or install it yourself as:

$ gem install mysql_double_index

Usage

And then execute:

$ rails c

#查詢單個表重復&冗余索引
$ > MysqlDoubleIndex.db_double_index("articles")

#查詢所有表重復&冗余索引
$ > MysqlDoubleIndex.db_double_index

#查詢單個表磁盤占用大小
$ > MysqlDoubleIndex.db_table_size("articles")

#查詢所有表磁盤占用大小
$ > MysqlDoubleIndex.db_table_size

項目主頁:http://www.baiduhome.net/lib/view/home/1439259001864

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!