单独列索引VS多
问题描述:
我有3列id safeid branchid
单独列索引VS多
- 有些时候我需要safeid
得到记录的表,所以我有一个safeid (INDEX)
- 有些时候我需要branchid
得到记录,以便我有一个branchid (INDEX)
-有时我需要通过safeid
和branchid
在一起获得记录。所以问题是:我是否必须为两列创建另一个branchid_safeid (INDEX)
以使选择更快?
另一个问题
的id
列是一个唯一的主键..我是否需要创建id (INDEX)
或主键是由自身的索引
答
(我重新打开,因为“DUP的”只回答了第二个问题)
问题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
。基本没有理由复制PRIMARY KEY
并增加单独的UNIQUE KEY
或INDEX
。
这里是 “DUP的” 先前引述:
Is the primary key automatically indexed in MySQL?
Do I need to create separate index for primary key of relational database table