【问题标题】:What is the use of Mysql Index key?Mysql索引键有什么用?
【发布时间】:2010-05-27 21:51:18
【问题描述】:

你好,我是 mysql 的新手

这是我的问题:

  1. Mysql索引键有什么用?

  2. 定义索引键和不定义索引键对 mysql 查询有影响吗?

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

谢谢一百万

【问题讨论】:

    标签: mysql optimization indexing


    【解决方案1】:

    1- 在列(或列集)上定义索引可以更快地搜索该列(或列),但会占用额外的磁盘空间。

    2- 是的,不同之处在于使用该列的查询会快得多。

    3- 是的,因为通常按主键搜索,所以该列总是被索引是有意义的。

    阅读有关 MySQL 索引的更多信息here

    【讨论】:

      【解决方案2】:

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

      使索引访问更快的事情是:

      • 在内部,引擎放入缓冲区索引的机会比整个表的行多
      • 索引更小,因此解析它意味着读取的硬盘块更少
      • 索引已排序,因此查找给定值很容易
      • 在不为空的情况下,它会更快(出于各种原因,但最重要的是要知道引擎不会在索引中存储空值

      要知道索引是否有用并不是那么容易猜测(显然我不是在谈论主键)并且应该进行调查。以下是一些可能会减慢您的操作的对应物:

      • 它会减慢索引字段的插入和更新速度
      • 需要更多维护:必须为每个索引构建统计信息,因此如果添加许多索引,计算可能会花费更长的时间
      • 当统计信息不是最新的时,它可能会减慢查询速度。这种影响可能是灾难性的,因为引擎实际上会“走错路”
      • 当查询不充分时,它可能会变慢(无论如何索引不应该是一个规则,而是一个例外:没有索引,除非对某些查询有冲动。我知道通常每个表都有至少一个索引,但它来了调查后) 我们可以对最后一点发表很多评论,但我认为每个案例都是特殊的,互联网上已经存在很多这样的例子。

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

      问候。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-21
        • 2019-02-08
        • 2016-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-22
        相关资源
        最近更新 更多