int类型列的mysql索引

7 mysql indexing

如果列的类型为int,是否仍需要编制索引以使选择查询运行得更快?

SELECT * 
  FROM MyTable 
 WHERE intCol = 100;
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 8

是的,无论数据类型如何,任何列上的索引都可以使查询执行得更快.数据本身就是重要的 - 如果系统中当前只有两个值,则使用索引没有意义.

另请注意:

  • 索引的存在并不能确保它将被使用 - 表统计信息需要是最新的,但它实际上取决于查询.
  • MySQL也只允许每个SELECT一个索引,并且索引的空间有限(限制依赖于引擎).


Mar*_*rkR 5

可能是,除非

  • 该表的行很少(<1000)
  • int柱的选择性差
  • 该表的很大一部分将被返回(例如> 1%)

在这种情况下,无论如何,表扫描可能更有意义,优化器可以选择执行一次。无论如何,在大多数情况下,拥有索引并不是非常有害,但是您绝对应该尝试一下并看看(在您的实验室中,在具有类似生产数据集的生产级硬件上)