我应该为多列索引所覆盖的数据设置索引吗?

yks3o0rb  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(414)

假设我有一个简单的表来描述人。
此表有三列:

Person_id, name, surname

我想在此表上创建一个索引。我知道指向此表的查询将根据姓名搜索人员( WHERE name = 'sth' )根据名字和姓氏( WHERE name = 'sth' AND surname = 'sth' ).
所以我在列上创建了索引 (name, surname) . 在这种情况下,我应该只在列上添加一个附加索引吗 (name) ?

bwleehnv

bwleehnv1#

不需要两个索引。单一复合索引将处理这两种情况 name 以及 name / surname --只要 name 是索引中的第一列。
在任何数据库中都应该如此。
mysql对多列索引有很好的解释;它可能会帮助你更好地理解它们。
我应该注意到,这是指b-tree索引,它是几乎所有支持索引的数据库中的默认和标准索引。它不一定适用于所有索引。例如,基于哈希的索引没有此属性。

相关问题