我有一个包含50行的表格。它是一个将文档ID与文档类型相关联的表。它有一个主键,没有索引,一个名称字段,一个整数字段,几个布尔字段。查询:
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行,差异应该可以忽略不计。
更新
我相当肯定它与表本身无关。问题是,服务器上可能会发生什么情况会导致此类问题?
答案 0 :(得分:1)
运行以下查询
REPAIR TABLE documentTypes
和
OPTIMIZE TABLE documentTypes