2011-07-04 32 views
1

當使用不同的索引名稱時,Mysql不會阻止爲同一列創建索引。我想內部只有一個索引被創建和更新,但我最好在這裏問這是否屬實。mysql如何與兩個相等的索引一起工作?

當我的建議不正確時,維護索引不止一次的原因是什麼?

回答

1

還有一個情況下,當一個表有兩個指標,一個用於field-1,另一個用於(field-1, field-2)。第二個索引使第一個不需要,但是我懷疑MySQL做了什麼比維護這兩個索引少。

這是開發人員或DBA的工作,而不是索引重複或冗餘,應該刪除。

我對這種重複出現在第一位的原因的猜測是有人在過去使用索引進行測試以優化某些查詢並在完成時忘記將其刪除。

2
  • 是的,我希望兩個指標中只有一個實際上是內部維護的。但沒關係,因爲你不應該這樣做。

  • 沒有理由維護兩個重複索引。

+0

在另一個項目的模式中發現了這一點,我不是開發人員。在這個問題中,我的意思是mysql不是程序員維護索引。 – giftnuss

+0

@giftnuss:是的,我用了「保持」的意思。我認爲你應該問開發商他爲什麼這麼做,因爲它很愚蠢,沒有目的(儘管最終是無害的)。 –

3

應該只有一個索引作爲@Tomalak提到。檢查這個環節一旦

How do MySQL indexes work?

http://www.mysqlperformanceblog.com/2006/08/17/duplicate-indexes-and-redundant-indexes/

地址:

可能有一個列有redundent指標的情況。您可以通過使用SP它們找出來

I_S_REDUNDANT_INDEXES: lists all redundant indexes 

要刪除它們

I_S_REDUNDANT_INDEXES_DROP 

請參閱此鏈接

http://malcook-gedanken.blogspot.com/2008_10_01_archive.html

+0

什麼是「SP」?這些命令在哪裏被僱用? –

+0

SP =存儲過程。這些是存儲過程,用於查找/列出冗餘索引,並在需要時將其刪除。用於數據庫。檢查此鏈接http://malcook-gedanken.blogspot.com/2008_10_01_archive。html – Rahul

+0

正確,因此這些存儲過程必須在「社區反饋部分」中查找並在您的數據庫中創建。在你的回答中這可能值得一提......? –

2

MySQL允許您創建冗餘索引並將其全部維護。

嘗試mk-duplicate-key-checker這是一個很好的工具,可以找到重複/冗餘索引。輸出具有ALTER TABLE語句以刪除重複項,因此您可以將其作爲SQL腳本運行。但我建議在執行之前檢查輸出。