2010-06-22 90 views

回答

5

一般来说,是的。如果您在该字段上执行ORDER BY,则应该将其编入索引。当然,你需要首先测试它,以确保它确实有帮助 - 如果你只选择了少量的行,它可能没有太大的区别。

4

你真的希望有一个sort_ordermaxes out at 9,223,372,036,854,775,807?!假设为零,INT仍然相当大,最大值为2,147,483,647 ...

取决于您的查询,但我会考虑在独立之前在覆盖索引中使用它。 MySQL has a space limit on indexes,如果您定义每列索引,则可能会达到上限:

前缀支持和前缀长度(受支持的)是依赖于存储引擎的。例如,对于MyISAM表,前缀可以长达1000个字节,对于InnoDB表,前缀可以长达767个字节。

2

正如埃里克上面已经提到的,答案是肯定的。

尽管如此,如果你实际上是做了很多的插入和更新的表中,MySQL构建的,需要每一个有表中所做的更改时要更新的索引信息的单独块。因此在某些情况下可能会有开销。

所以基本上这是一个混合的情况下,情节应始终考虑。

2

一般来说,没有。你用搜索来证明索引。当你将记录数减少到通常显示的数字(比如说少于几百)时,有一个索引不会为你购买任何东西。

所以只能添加一个索引,如果你会使用字段选择(其中包括,比如说,“LIMIT 500”为实例。)

+0

即使在有限的记录,有希望的性能每一点的商店,他们可以得到。 – 2010-06-22 22:14:43

+0

这几乎肯定是净亏损。如果集合很小,“ORDER BY”不会受益;维护索引是纯粹的开销。 – dkretz 2010-06-23 01:43:18

+0

“一般来说,否”不会涵盖需要全表读取并且有序读取有益甚至是必需的情况吗? – Harald 2015-06-30 12:27:39

相关问题