Mysql 独立列索引与多列索引

Mysql 独立列索引与多列索引,mysql,indexing,Mysql,Indexing,我有一个3列的表id safeid branchid -有时我需要通过safeid获取记录,因此我有一个safeid(索引) -有时我需要通过branchid获取记录,因此我有一个branchid(索引) -有时我需要同时通过safeid和branchid获取记录。所以问题是:我是否必须为两列一起创建另一个branchid\u safeid(INDEX),以加快选择 另一个问题 id列是唯一的主键。。我需要创建id(INDEX)还是主键本身就是一个索引(我重新打开了,因为“DUP”只回答了第二个

我有一个3列的表
id safeid branchid

-有时我需要通过
safeid
获取记录,因此我有一个
safeid(索引)

-有时我需要通过
branchid
获取记录,因此我有一个
branchid(索引)

-有时我需要同时通过
safeid
branchid
获取记录。所以问题是:我是否必须为两列一起创建另一个
branchid\u safeid(INDEX)
,以加快选择

另一个问题

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

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

问题#1:对于safeid=123和branchid=234的
,您需要按任意顺序编制
索引(safeid,branchid)
。更好的是,有两个索引:

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

更多的讨论

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

以下是先前引用的“DUP”:


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