【问题标题】:MySql - why primary key index is not sufficient? [closed]MySql - 为什么主键索引不够? [关闭]
【发布时间】:2018-06-21 15:53:24
【问题描述】:

我是数据库新手,所以请不要喷我。

我研究了 MySql 自动为主键创建索引。 但是,如果索引是用来加速搜索和连接的,而主键总是用在这两个操作中,为什么还要为其他列创建索引呢?

【问题讨论】:

  • 在需要加快搜索速度时创建索引 - 通过可用于快速减少问题/表/数据空间 - 如果/当 PK 不足以启用所需的查询时 SARGable(搜索它).. 太宽泛了。
  • 如果你想搜索SELECT * WHERE secondColumn = specificValue -> 如果你没有包含第二列的索引,那么主键/其他coclumns上的索引对于更快的搜索是没有用的。将使用全表扫描。

标签: mysql sql database


【解决方案1】:

联接只是 PK 到 PK。任何 2 个表都可以在涉及其任何列的任何条件下连接。加入不需要 PK(主键)和其他约束和索引。它们用于完整性和优化。

表格代表应用程序/业务关系(船舶)/关联。查询返回一个由基表组合而成的表。该表表示一个关系(船)/关联,它是这些基表的关系(船)/关联的相应组合。

What Kind of Relationship is Between These Tables?
Required to join 2 tables with their FKs in a 3rd table

【讨论】:

    【解决方案2】:

    例如,您可能希望按另一列搜索(排序结果或在 where 子句中过滤结果),例如 People.Name 或 People.LastName。为了更快地完成此操作,您可以使用此列创建索引。如果您不需要它,它甚至可能不包含主键。

    问题是索引中的数据以与表中不同的方式存储,特别是为了加快索引搜索速度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-08
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2016-06-09
      • 1970-01-01
      相关资源
      最近更新 更多