2012-06-08 127 views
2

的MySQL索引/订货数据我有一个简单的表“T1”,包含:根据多个条件

word VARCHAR(16) 
id INT 
importance SMALLINT 

字和ID是唯一的一起,但仅靠也不是唯一的。

我加了一个UNIQUE INDEX(word, id)

我的查询看起来是这样的:

SELECT id FROM t1 WHERE word = "something" ORDER BY importance DESC 

但它需要0.0002秒执行说:

SELECT id FROM t1 WHERE word = "something" 

但需要高达0.15秒,以执行ORDER BY importance DESC

我的问题是,我该如何索引/重新排序我的表,使其首先按字组织,然后按重要性排序,而不必在飞行中进行排序?

我可以对静态数据进行重新排序,因此默认排序为word, importance DESC

回答

2

要加快查询速度,请在(word, importance DESC, id)上添加索引。

您可以在一个表上有多个索引,因此如果您不想删除您现有的索引,就不需要删除您的现有索引。

+0

我想到了这一点,但问题出现在我填充表格时。我想确保我不添加多个单词,id对。你怎么看? – nick

+0

@nick:正如我所说的,你不需要删除你的唯一索引。您可以同时使用两个索引。 –

+0

这不会使磁盘空间增加一倍吗? – nick