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