我想在此表上创建一个索引。我知道指向此表的查询将根据姓名搜索人员( WHERE name = 'sth' )根据名字和姓氏( WHERE name = 'sth' AND surname = 'sth' ). 所以我在列上创建了索引 (name, surname) . 在这种情况下,我应该只在列上添加一个附加索引吗 (name) ?
不需要两个索引。单一复合索引将处理这两种情况 name 以及 name / surname --只要 name 是索引中的第一列。 在任何数据库中都应该如此。 mysql对多列索引有很好的解释;它可能会帮助你更好地理解它们。 我应该注意到,这是指b-tree索引,它是几乎所有支持索引的数据库中的默认和标准索引。它不一定适用于所有索引。例如,基于哈希的索引没有此属性。
1条答案
按热度按时间bwleehnv1#
不需要两个索引。单一复合索引将处理这两种情况
name
以及name
/surname
--只要name
是索引中的第一列。在任何数据库中都应该如此。
mysql对多列索引有很好的解释;它可能会帮助你更好地理解它们。
我应该注意到,这是指b-tree索引,它是几乎所有支持索引的数据库中的默认和标准索引。它不一定适用于所有索引。例如,基于哈希的索引没有此属性。