MYSQL - 使用where和filesort

时间:2015-09-07 19:34:05

标签: mysql indexing

你好这个查询产生了这个解释,考虑到我为两个列设置了索引

,这很奇怪
'1', 'SIMPLE', 'vtr_video_transactions', 'ALL', 'user_standard,user_date', NULL, NULL, NULL, '5', 'Using where; Using filesort'

CREATE TABLE `vtr_video_transactions` (
  `vtr_id` int(11) NOT NULL AUTO_INCREMENT,
  `vtr_transaction_id` int(11) unsigned DEFAULT NULL,
  `vtr_user_id` int(11) unsigned DEFAULT NULL,
  `vtr_standards_id` int(11) unsigned DEFAULT NULL,
  `vtr_video_date` datetime DEFAULT NULL,
  PRIMARY KEY (`vtr_id`),
  KEY `user_standard` (`vtr_user_id`,`vtr_standards_id`),
  KEY `user_date` (`vtr_user_id`,`vtr_video_date`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

请参阅user_date以获取索引。我把它设置为MYSQL Workbench上的DESC。但我得到文件解释。不知道为什么。干杯

表格数据

LOCK TABLES `vtr_video_transactions` WRITE;
/*!40000 ALTER TABLE `vtr_video_transactions` DISABLE KEYS */;
INSERT INTO `vtr_video_transactions` VALUES (1,1,1,2,'2015-09-05 17:18:59'),(2,2,1,3,'2015-08-27 19:04:12'),(3,2,1,4,'2015-08-27 18:55:53'),(4,10,1,119,'2015-08-27 19:04:12'),(5,11,1,10,'2015-08-27 19:04:12');

1 个答案:

答案 0 :(得分:3)

请参阅手册页here

  

索引对于小型表或大型表的查询不太重要   报表查询处理大多数或所有行的位置。当一个查询   需要访问大多数行,顺序读取比快   通过索引工作。顺序读取可以最大限度地减少磁盘搜索   如果不是查询所需的所有行。