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