2012-10-15 29 views
1

多個索引我有以下架構表:對同一個表

CREATE TABLE IF NOT EXISTS `feeds` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `external_id` varchar(255) DEFAULT NULL, 
    `user_id` int(11) DEFAULT NULL, 
    `name` varchar(255) DEFAULT NULL, 
    `notes` text, 
    `image_id` int(11) DEFAULT NULL, 
    `location_id` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9046 ; 

我創建的索引上external_idlocation_id他們是爲了針對不同的查詢效果表分開使用。我知道每次添加,更新或刪除記錄時,MySQL都必須重建索引。我想不出的是,如果更新此表中的記錄的name字段將導致重建一個或兩個索引。另外,我想知道,這種兩個單獨的指標是否可以存在於這張桌子上,而不會對彼此的表現產生負面影響?感謝您的時間。

回答

2

索引不是「重建」的,但是它們被更新。更改未編制索引的列中的數據不應導致任何重新編制索引活動。

+0

這仍然意味着在對此表的任何插入時,索引必須每次都要重新寫入?有沒有一個很好的資源可以解釋這種類型的特定索引?謝謝你的幫助,tadman。 – usumoio

1

MyISAM是您正在使用的MySQL存儲引擎,每次更新行時都會更新索引。這意味着表的索引越多,從表中插入,更新或刪除行的時間就越多。但查詢應該運行得更快。您可能想要將EXPLAIN用於查詢計劃。