我有一個MySQL數據庫如下表:多列索引VS多個索引
CREATE TABLE `secondary_images` (
`imgId` int(10) unsigned NOT NULL AUTO_INCREMENT,
`primaryId` int(10) unsigned DEFAULT NULL,
`view` varchar(255) DEFAULT NULL,
`imgURL` varchar(255) DEFAULT NULL,
`imgDate` datetime DEFAULT NULL,
PRIMARY KEY (`imgId`),
KEY `primaryId` (`primaryId`),
KEY `imgDate` (`imgDate`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
的SQL將是以下幾點:
SELECT imgURL, view FROM secondary_images
WHERE primaryId={$imgId} ORDER BY imgDate DESC
正如你可以看到我做了兩個primaryId
和imgDate
,索引鍵。我背後的想法是因爲WHERE
子句的查詢結果使用primaryId
和ORDER
子句使用imgDate
。
我的問題是,它會更好,因爲我現在使用多個索引?或者我應該多列索引(目前我不太瞭解的東西)?
這是我從得到解釋一下:
id = 1
select_type = simple
table = secondary_images
type = ref
possible_keys = primaryId
key = primaryId
key_len = 5
ref = const
rows = 1
extra = Using where; Using filesort
注:這不是使用多列索引,它是從使用上表中描述的結果。
你可以發佈EXPLAIN的選擇? :) – Konerak
請記住,indeces不是免費的。如果您有多個indeces,這意味着每次插入或更新時,都需要更新每個索引。您需要權衡這些更新的性能點擊與您在檢索時看到的性能改進。 – Marvo
還請記住,如果您有許多行中具有相同值的列,則索引可能實際上會使性能變差。 – Poodlehat