为什么我的MySQL查询速度慢?

时间:2018-08-05 09:15:20

标签: mysql

此查询耗时一分钟,大约有500,000条记录

名称是CHAR

userid是唯一的主INT

locked_date是一个表示unix_timestamp的INT

其余为0或1个TINYINT

有关如何使此查询更快的任何提示?

SELECT  name,userid 
FROM  `sn` 
FORCE INDEX(unlock_target2)
WHERE `locked`  = 1 
and `unlocked` = 0 
and (back_locked = 0 or back_unlocked = 1) 
and flag = 0 
and deleted = 0     
ORDER BY locked_date ASC
LIMIT 1

说明选择

+----+-------------+-------+------+------------------+------------------+---------+-------------+------+----------------------------------------------------+
| id | select_type | table | type | possible_keys    | key              | key_len | ref         | rows | Extra                                              |
+----+-------------+-------+------+------------------+------------------+---------+-------------+------+----------------------------------------------------+
|  1 | SIMPLE      | sn    | ref  | unlock_target2   | unlock_target2   | 2       | const,const | 6716 | Using index condition; Using where; Using filesort |
+----+-------------+-------+------+------------------+------------------+---------+-------------+------+----------------------------------------------------+

创建

CREATE TABLE `sn` (
`date_added` int(11) NOT NULL,
`userid` bigint(20) NOT NULL DEFAULT '0',
`name` char(30) NOT NULL,
`status` char(15) NOT NULL,
`pool` char(30) NOT NULL,
`flag` tinyint(4) NOT NULL DEFAULT '0',
`turn` int(11) NOT NULL DEFAULT '0',
`deleted` tinyint(4) NOT NULL DEFAULT '0',
`private` tinyint(4) NOT NULL DEFAULT '0',
`media_count` int(11) NOT NULL DEFAULT '-1',
`props_received` int(11) NOT NULL DEFAULT '-1',
`locker_count` int(10) DEFAULT '-1',
`locking_count` int(10) DEFAULT '-1',
`commenter` int(11) DEFAULT '0',
`props` smallint(5) unsigned NOT NULL DEFAULT '0',
`locked_date` int(11) NOT NULL DEFAULT '0',
`locked` tinyint(4) NOT NULL DEFAULT '0',
`unlocked` tinyint(4) NOT NULL DEFAULT '0',
`back_locked` tinyint(4) NOT NULL DEFAULT '0',
`back_unlocked` tinyint(4) NOT NULL DEFAULT '0',
`media_propped` tinyint(4) NOT NULL DEFAULT '0',
`date_propped` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`userid`),
UNIQUE KEY `userid_2` (`userid`),
KEY `userid` (`userid`),
KEY `unlock_target1` (`back_unlocked`,`locked`,`unlocked`,`flag`,`deleted`,`locked_date`),
KEY `unlock_target2` (`locked`,`unlocked`,`back_unlocked`,`flag`,`deleted`,`locked_date`),
KEY `index_locked` (`locked`),
KEY `index_unlocked` (`unlocked`),
KEY `index_back_locked` (`back_locked`),
KEY `index_flag` (`flag`),
KEY `index_deleted` (`deleted`),
KEY `index_locked_date` (`locked_date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

0 个答案:

没有答案