首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >键的用途是什么?

问键的用途是什么?
EN

Stack Overflow用户
提问于 2010-05-27 21:51:18
回答 2查看 365关注 0票数 1

嗨,我是mysql的新手

以下是我的问题:

  1. 键的用途是什么?
  2. 定义索引键和不使用索引键对mysql查询有影响吗?
  3. 所有主键都是默认索引键吗?

多谢百万

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-27 21:56:47

1-在列(或列集)上定义索引使搜索该列(或列集)的速度快得多,而牺牲了额外的磁盘空间。

是的,区别在于使用该列的查询将更快。

3-是的,通常按主键进行搜索,因此该列总是被索引是有意义的。

阅读有关MySQL索引这里的更多信息。

票数 3
EN

Stack Overflow用户

发布于 2012-06-22 13:48:37

索引实际上是一组额外的记录。没别的了。

使索引访问速度更快的因素有:

  • 在内部,与整个表行相比,引擎放入索引缓冲区的可能性更大
  • 索引比较小,所以解析它意味着读取较少的硬盘块。
  • 索引已经排序,因此找到给定的值很容易。
  • 如果不是null,它会更快(出于各种原因,但最重要的是引擎不会在索引中存储空值)

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

  • 它将减缓索引字段上的插入和更新。
  • 它需要更多的维护:必须为每个索引构建统计数据,所以如果添加许多索引,计算时间可能会大大延长。
  • 当统计数据不及时时,它可能会减慢查询的速度。这一影响可能是灾难性的,因为发动机实际上会“走错路”。
  • 当查询不足时,它可能会减慢(无论如何,索引不应该是规则,而应该是例外:没有索引,除非对某些查询有强烈要求。我知道通常每个表都有至少一个索引,但它是经过调查得出的)我们可以评论最后一点,但我认为每一种情况都是特殊的,在互联网上已经有很多这样的例子。

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

致以问候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2925251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档