MySQL索引,在查询中的不同列上使用大于和order by

MySQL索引,在查询中的不同列上使用大于和order by,mysql,sql-order-by,Mysql,Sql Order By,我正在尝试优化一个查询,该查询在一列上使用>=比较,并在另一列上使用order by。下面的查询示例: SELECT table1.title FROM table1 WHERE table1.date >= '2014-01-16 22:04:16' ORDER BY table1.vote_count DESC LIMIT 10 OFFSET 0; 我还没有找到避免使用文件排序的方法;MySQL将检索与>=比较匹配的所有行,然后使用filesort。这是有问题的,因为日期范围可能非常

我正在尝试优化一个查询,该查询在一列上使用>=比较,并在另一列上使用order by。下面的查询示例:

SELECT table1.title FROM table1 WHERE table1.date >= '2014-01-16 22:04:16' ORDER BY table1.vote_count DESC LIMIT 10 OFFSET 0;
我还没有找到避免使用文件排序的方法;MySQL将检索与>=比较匹配的所有行,然后使用filesort。这是有问题的,因为日期范围可能非常大,并且包含许多行

SHOW CREATE TABLE table1;
| table1 | CREATE TABLE `table1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(50) NOT NULL,
`date` datetime DEFAULT NULL,
`like_count` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `date` (`date`),
) ENGINE=InnoDB AUTO_INCREMENT=685 DEFAULT CHARSET=utf8 | 
然后选择下面的解释:

EXPLAIN SELECT table1.title FROM table1 WHERE table1.date >= '2014-01-16 22:04:16' ORDER BY table1.vote_count DESC LIMIT 10 OFFSET 0 \G

*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: user_playlists
type: range
possible_keys: date
key: date
key_len: 9
ref: NULL
rows: 14
Extra: Using where; Using filesort
1 row in set (0.03 sec) 

显示什么解释选择。。。说。您运行分析表1了吗?同时显示show create table table的输出1我的实际表格中有许多不必要的列用于回答这个问题。我将进行编辑,但我相信所有相关信息都在这里。是的,您可以省略查询中未使用的一些列,但包括所有其他信息。您是否可以使用\G而不是;?要摆脱文件排序,请在表1投票计数上创建索引yourIndexName;