非常小的桌子挂在"排序结果"

时间:2015-05-11 14:25:46

标签: php mysql

我有一个包含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行,差异应该可以忽略不计。

更新

我相当肯定它与表本身无关。问题是,服务器上可能会发生什么情况会导致此类问题?

1 个答案:

答案 0 :(得分:1)

运行以下查询

REPAIR TABLE documentTypes

OPTIMIZE TABLE documentTypes