【问题标题】:Separate column index VS Multiple单独的列索引 VS 多个
【发布时间】:2018-04-10 02:48:44
【问题描述】:

我有一个包含 3 列的表格 id safeid branchid

-有时我需要通过safeid 获取记录,所以我有一个safeid (INDEX)

-有时我需要通过branchid 获取记录,所以我有一个branchid (INDEX)

-有时我需要通过safeidbranchid 一起获取记录。所以问题是:我是否必须为两列一起创建另一个 branchid_safeid (INDEX) 以加快选择速度?

另一个问题

id 列是唯一的主键.. 我需要创建id (INDEX) 还是主键本身就是一个索引

【问题讨论】:

    标签: mysql indexing


    【解决方案1】:

    (我重新打开是因为“dups”只回答了第二个问题。)

    问题#1:对于WHERE safeid = 123 AND branchid = 234,您需要INDEX(safeid, branchid),无论顺序如何。更好的是,有 两个 索引:

    INDEX(safeid, branchid),  -- for the pair, or for just `safeid`
    INDEX(branchid)           -- for branchid
    

    这将处理您提到的 3 个案例。

    更多讨论here

    问题 #2: 至于“另一个问题”,在 MySQL(特别是 InnoDB)中,PRIMARY KEY 与数据“聚集”在一起;它是UNIQUE;它是INDEX。基本上没有理由通过添加单独的UNIQUE KEYINDEX 来复制PRIMARY KEY

    以下是之前引用的“重复”:

    Is the primary key automatically indexed in MySQL?
    Do I need to create separate index for primary key of relational database table

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-05
      • 2013-01-04
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多