未检测到MySQL中的反转表索引

时间:2013-07-20 18:04:02

标签: mysql

我一直在尝试加速涉及复杂查询的ORDER BY的MySQL查询。我已经用尽了几个选项,并且已经非常接近了 - 我找到了在相关表格上实现伪反向索引的最佳解决方案。

我基本上模仿了这篇文章的建议(包括使用id而不是发布日期的变体,使用联合索引等): http://www.igvita.com/2007/08/20/pseudo-reverse-indexes-in-mysql/

并成功添加了额外的列,填充了它,添加了索引,但是查询

SELECT * FROM products USE INDEX (index_reverse_created);

似乎不起作用。插入随机字或常规列代替索引名称会引发错误,因此我意识到它已成功检测到索引。

然而,使用EXPLAIN SELECT * ...进一步检查显示了这一点:

http://i44.tinypic.com/2aes304.png

possible_keyskey的特殊部分是(NULL)。

SHOW INDEX FROM产品产生了这个:

http://i41.tinypic.com/fvvdl1.png

这似乎是一套健康的指数。

总而言之,我很难过。似乎索引就在那里,但在尝试实际使用它时会出现问题。

1 个答案:

答案 0 :(得分:2)

当您的查询中有where,order by,group by子句时,将使用您的索引。 你写了简单,简单的查询,没有任何额外的查询,mysql将使用fullscan和读取数据。