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