mysql 复合索引我应该使用它们吗
我对 mysql 的索引策略有疑问 - 主要是何时使用复合索引
我有一个相当常见的关系数据库场景,这是我的表设置:
Maintable - table consisting of "products" including brandid, merchantid
所以我创建一个表来存储品牌和商家
Brandtable - brandname, brandid
Merchanttable - merchantname, merchantid
当我查询 Maintable 时,我有时会查询用于brandid,有时用于merchantid,有时两者兼而有之。在这种情况下最好使用什么,每列上的单个索引,还是由两者组成的复合索引?
另外,如果我想在全文搜索中包含品牌名称和商家名称,我将如何实现这一目标?
干杯:)
I got question on index strategies for mysql - mainly when to use a composite index
I have a fairly common relational db scenario, heres my table set up:
Maintable - table consisting of "products" including brandid, merchantid
So I create a table to store the brands and merchants
Brandtable - brandname, brandid
Merchanttable - merchantname, merchantid
When I query the Maintable I sometimes query for brandid, sometimes for merchantid and sometimes both. What is best to use in this scenario, a single index on each column, or composite index made up of both?
Also if I wanted to include brandname and merchantname in a fulltext search, how would I achieve this?
Cheers :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这种情况下,您应该为每一列使用单独的索引。如果您的查询涉及复合索引中最左边的列,MySQL 只能使用复合索引。
例如,如果您有一个复合索引
(brandid,merchantid)
,则当您查询brandid
或brandid
和 <代码>merchantid。如果您仅在merchantid
上查询,则不会In this case you should use a separate index for each column. MySQL can only use a composite index if your queries involve the leftmost columns in that composite index.
e.g., if you have a composite index of
(brandid,merchantid)
, that index will be considered if you query onbrandid
orbrandid
andmerchantid
. Not if you only query onmerchantid