假设我有一个描述人的简单表-人。
此表具有三列:
Person_id, name, surname
我想在此表上创建索引。我知道针对此表的查询将根据姓名(WHERE name = 'sth'
)以及姓名和姓氏(WHERE name = 'sth' AND surname = 'sth'
)搜索人员。
所以我在(name, surname)
列上创建了索引。在这种情况下,我应该仅在列(name)
上添加其他索引吗?
不需要两个索引。只要name
是索引中的第一列,单个复合索引将同时处理name
和surname
/ name
上的条件。
在任何数据库中都应为真。
MySQL具有相当不错的多列索引explanation;它可以帮助您更好地理解它们。
我应该注意,这是指b树索引,它是几乎每个支持索引的数据库中的默认索引和标准索引。它不一定适用于所有索引。例如,基于散列的索引不具有此属性。