2013-02-03 59 views
0

我試過製作兩個數據庫表wp_marketingwp_email。我在這些表中有redundant indexes的問題。我已添加SHOW CREATE TABLE tablename;如何處理冗餘索引

CREATE TABLE `cur_emailcontent` (
`title` varchar(100) NOT NULL, 
`message` varchar(1000) NOT NULL, 
`mail_from` varchar(100) NOT NULL, 
`subject` varchar(100) NOT NULL, 
KEY `title` (`title`), 
CONSTRAINT `cur_emailcontent_ibfk_1` FOREIGN KEY (`title`) REFERENCES `cur_marketing` (`title`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

最初我提出title列作爲primary,然後我改變相同的Index TypeINDEX。現在我可以使用任何其他columnPRIMARY KEY,但我不能使用PHPMyAdmin刪除此index,但無法這樣做。我知道這些類型的indexes被稱爲redundant indexes

現在除了再次創建table(s)之外,我沒有其他選擇。有沒有解決這樣的索引?

+0

你在*我有這些表中的一個共同的問題失去了我* – hjpotter92

+0

現在應該很清楚。 –

+0

@buzzinga:在問題中添加'SHOW CREATE TABLE tablename;'的輸出。 –

回答

2

如果查詢cur_emailcontent基於title的表很不可能,也不希望它成爲外鍵;也有mail_from作爲新的主鍵只需要執行:

ALTER TABLE cur_emailcontent DROP FOREIGN KEY cur_emailcontent_ibfk_1, 
DROP KEY title, 
ADD PRIMARY KEY (mail_from); 

MySQL Alter Syntax

+0

我已經放棄了'外鍵',但是當我放下''鍵標題'時,它說:#1553 - 無法刪除索引'標題':需要外鍵約束 –

+0

通過檢查表模式('show create table cur_emailcontent;') – SparKot

+0

確保'外鍵'約束被刪除,但它只顯示了一個'key',即'title'。當我嘗試刪除它時,它不會因'外鍵約束',而實際上不顯示架構! –