Mysql索引键的用途是什么?
嗨,我是mysql的新手 以下是我的问题:Mysql索引键的用途是什么?,mysql,optimization,indexing,Mysql,Optimization,Indexing,嗨,我是mysql的新手 以下是我的问题: Mysql索引键的用途是什么 定义索引键和不定义索引键对mysql查询有影响吗 所有主键都是默认索引键吗 多亏了一百万,在一列(或一组列)上定义一个索引可以大大加快在该列(或一组列)上的搜索速度,但需要额外的磁盘空间 2-是的,不同之处在于使用该列的查询速度要快得多 3-是的,正如通常按主键搜索一样,该列始终被索引是有意义的 阅读有关MySQL索引的更多信息。索引实际上是一组额外的记录。没别的了 使索引访问速度更快的是: 在内部,引擎将索引放入缓冲区
多亏了一百万,在一列(或一组列)上定义一个索引可以大大加快在该列(或一组列)上的搜索速度,但需要额外的磁盘空间 2-是的,不同之处在于使用该列的查询速度要快得多 3-是的,正如通常按主键搜索一样,该列始终被索引是有意义的
阅读有关MySQL索引的更多信息。索引实际上是一组额外的记录。没别的了 使索引访问速度更快的是:
- 在内部,引擎将索引放入缓冲区的可能性大于放入整个表行的可能性
- 索引更小,因此解析它意味着读取更少的硬盘块
- 索引已经排序,因此查找给定值很容易
- 如果不为null,则速度更快(出于各种原因,但最重要的是要知道引擎不会在索引中存储null值)
- 它会减慢索引字段的插入和更新速度
- 它需要更多的维护:必须为每个索引构建统计信息,因此如果添加许多索引,计算可能需要更长的时间
- 当统计数据不是最新的时,它可能会减慢查询速度。这种影响可能是灾难性的,因为发动机实际上会“走错方向”
- 当查询不充分时,它可能会减慢速度(无论如何,索引不应该是一个规则,而是一个例外:没有索引,除非对某些查询有强烈的需求。我知道通常每个表都至少有一个索引,但它是在调查之后出现的) 我们可以对最后一点做很多评论,但我认为每一个案例都是特殊的,互联网上已经有很多这样的例子