我有一个表中有50行。它是一个将文档ID链接到文档类型的表格。它有一个主键,没有索引,名称的字段,1个整数字段,几个布尔字段。查询:非常小的桌子挂在“排序结果”
SELECT id, name FROM documentTypes WHERE deprecated != 1 order by name asc
已经对“排序结果”进行了7分钟的优化。 (这是一个旧表,从来没有这样做过)而不是表本身,这似乎表明这与我的服务器或一些切线相关的表有一些问题。 什么情况会导致一个非常小的表挂在“排序结果”?
这是一个数据透视表,但在这种情况下,表正在被查询,以生成一个文件列表。
下面是表:
CREATE TABLE `documentTypes` (
`id` INT(3) NOT NULL,
`name` VARCHAR(1200) NOT NULL,
`hidden` INT(1) NOT NULL DEFAULT '0',
`numAllowedPer` INT(2) NOT NULL,
`pref1` INT(1) NOT NULL DEFAULT '0',
`pref2` INT(1) NOT NULL DEFAULT '0',
`deprecated` INT(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=latin1
和结果EXPLAIN
EXPLAIN SELECT id, name FROM documentTypes WHERE deprecated != 1 ORDER BY name asc
possible_keys: NULL
rows: 50
Extra: Using where; Using filesort
通过或者不通过deprecated
索引它不应该采取这种长时间运行的查询。由于只有50行,所以差异应该可以忽略不计。
UPDATE
我相当肯定它无关,与表本身。问题是,服务器上会发生什么会导致此类问题?
是的,这是很可疑的。这是InnoDB ...你有没有'mysqldump'桌子并重建它? https://dev.mysql.com/doc/refman/5.0/en/rebuilding-tables.html –
它总是这么长时间? – Aris
@Aris不是表已经出现多年没有问题 – chiliNUT