[英]Add index when allready is primary
你的问题是这样的:是不是要把表的主键PK放到多列索引中作为最后一列?
如果使用InnoDB存储引擎,答案是否定的。 为什么不? InnoDB 已经将 PK 作为索引的一部分包含在内。
如果您不使用 InnoDB —— 也就是说,如果您使用 MyISAM 或 AriaDB(在 MariaDB 中),答案是肯定的。
不过,您应该评估索引对查询的帮助程度。
在 wl.itemId= ld.itemId 和 wl.clientId= @clientId
乞求
INDEX(itemId, clientId) -- in either order
但是,如果这些列中的任何一个是wl
的PRIMARY KEY
,则不需要索引,也没有用。 PK 将提供对所需行的即时访问。 另一列只能验证它是否匹配——即从JOIN
中删除该行。
我应该在这里为 clientId 和 itemId 创建索引组合吗
是,如果两者都不是UNIQUE
的(请记住 PK 是“唯一的”。)
或者因为 clientId 是主要的,所以只针对 itemId
MySQL 几乎永远不会使用两个单独的索引。 (请记住,PK是一个索引。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.