2011-02-06 83 views

回答

3

可能是肯定的,除非

  • 表有很少的行(< 1000)
  • 的int的列有选择性较差
  • 正在返回的表大比例(比如> 1% )

在这种情况下,表扫描可能会更有意义,优化器可能会选择做一个。在大多数情况下,索引无论如何不是非常有害的,但是您应该尝试一下并看到(在您的实验室中,使用类似于生产的数据集的生产级硬件)

2

是的。不管列的数据类型如何。如果您没有指定索引,则只要您在该列中搜索值,mysql就必须扫描整个表。

+0

也许不是布尔值就我而言知情。例如。看到这个:http://stackoverflow.com/questions/10524651/is-there-any-performance-gain-in-indexing-a-boolean-field – dennis 2015-02-02 10:11:38

4

是的,任何列上的索引都可以使查询执行得更快,而不管数据类型如何。数据本身至关重要 - 如果系统中只有两个值,那么使用索引是没有意义的。

另外要注意的是:

  • 索引的存在并不能确保这些信息将用于 - 表统计需要是当前的,但它确实取决于查询。
  • MySQL也只允许每个SELECT一个索引,并且索引的空间有限(limit dependent on engine)。
+0

+1:额外的信息:) – shamittomar 2011-02-06 21:31:12

0

是的,索引上的全部要点是您可以通过primary key创建它们或者通过添加indexy manualy。列的类型没有提及任何关于查询速度的信息。

0

是的,它必须被索引。如果索引tinyint用作布尔值,则没有意义,因为此索引不够有选择性。