0
好吧,我有以下MySQL表結構:MySQL的多列索引
CREATE TABLE `creditlog` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`memberId` int(10) unsigned NOT NULL,
`quantity` decimal(10,2) unsigned DEFAULT NULL,
`timeAdded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`reference` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `memberId` (`memberId`),
KEY `timeAdded` (`timeAdded`));
而我查詢這樣的:
SELECT SUM(quantity) FROM creditlog where timeAdded>'2016-09-01' AND timeAdded<'2016-10-01' AND memberId IN (3,6,8,9,11)
現在,我也用use index (timeAdded)
因爲由於條目數量更方便。解釋上面的查詢顯示:
type -> range,
key -> timeAdded,
rows -> 921294
extra -> using where
同時,如果我使用memberId
INDEX它表明:
type -> range,
key -> memberId,
rows -> 1707849
extra -> using where
現在,我的問題是,它可能這兩個指標在某種程度上結合起來一起使用,降低了因爲我還需要添加更多條件(在其他列上)。
是你想創建(timeAdded,memberId)的索引。 – khalid
我有興趣確定訂單實際上 – Samson
您測試過嗎? – khalid