使用IN
时查询速度非常慢此查询
SELECT *
FROM engine4_comment
WHERE sid IN (10,12,548,2110,5241,1255)
和这个创建表
CREATE TABLE `engine4_comment` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sid` int(11) NOT NULL,
`rid` int(11) NOT NULL DEFAULT '0',
`uid` int(11) NOT NULL,
`text` longtext COLLATE utf8_unicode_ci NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`active` int(11) NOT NULL DEFAULT '1',
`deleted` int(11) NOT NULL DEFAULT '0',
`deleted_reason` text CHARACTER SET latin1 NOT NULL,
`send_email` int(11) NOT NULL DEFAULT '1',
`user_active` tinyint(4) NOT NULL DEFAULT '1',
`dep_active` tinyint(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `dat_idx` (`date`),
KEY `rid_idx` (`rid`),
KEY `rsid_idx` (`rid`,`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=719329 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
当使用explaine explain SELECT * FROM
engine4_comment WHERE sid IN (10,12,548,2110,5241,1255)
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE engine4_comment ALL NULL NULL NULL NULL 875583 Using where
答案 0 :(得分:1)
这是您的查询:
SELECT *
FROM engine4_comment
WHERE sid IN (10,12,548,2110,5241,1255)
对于性能,您需要sid
上的索引。在KEY
中包含create table
语句。或者,明确创建索引:
create index idx_engine4_comment_sid on engine4_comment(sid);
请注意,索引rsid_idx
对此查询没有帮助,因为sid
是第二列。 (sid, rid)
上的索引会使此查询受益。