2010-05-27 95 views
1

您好我是新手到mysqlMysql索引键的用途是什么?

这里是我的问题:

  1. 什么是使用MySQL索引键的?

  2. 它是否会在定义一个索引键并且没有它的情况下在mysql查询中起作用?

  3. 所有主键都是默认的索引键吗?

万分感谢

回答

3

1列上定义的索引(或一组列),使搜索该列(或一组)快得多,在额外的磁盘空间为代价的。

2-是的,区别在于使用该列的查询会快得多。

3-是的,因为通常通过主键进行搜索,所以对于该列总是进行索引是有意义的。

阅读更多关于MySQL索引here

+0

谢谢!!!!!!!!!!!!!!!!〜 – leon 2010-05-27 22:54:34

0

索引确实是一组额外的记录。而已。

东西,让索引访问速度是:

  • 内部有更多的机会,发动机放在缓冲指数超过了整个表中的行
  • 该指数小,因此分析它意味着读书少块硬盘
  • 的索引已经排序,所以寻找一个给定的值很容易
  • 在暂时不空的情况下,它甚至更快(因各种原因,但要知道,最重要的是发动机d oesn't店指数空值)

要知道一个索引是否是有用的也不是那么容易猜(很明显,我不是在谈论主键),并应进行调查。这里有一些同行时,可能您的操作减慢:

  • 它会减慢插入和更新的索引字段
  • 它需要更多的维护:统计数据,必须建立对每一个指标,因此计算可能需要如果添加多个索引,则会显着延长时间
  • 当统计信息不是最新时,它可能会减慢查询速度。这种影响可能是灾难性的,因为引擎实际上会走“错误的路”
  • 当查询不充分时,它可能会放慢速度(反正索引不应该是一个规则,但是一个例外:没有索引,除非有确切的冲动我知道通常每个表至少有一个索引,但是在调查之后) 我们可以评论这最后一点,但我认为每个案例都是特殊的,并且在互联网中已经存在很多这样的例子。

现在关于您的问题'是否所有主键都是默认的索引键?',我必须说优化器不是这样工作的。当在表格中定义了各种索引时,为了达到最佳性能,将在飞行数据和其他一些静态数据(索引统计数据)上编译效率更高的索引组合。没有默认索引本身,每种情况都有不同的结果。

问候。