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

问题描述 投票:1回答:1

假设我有一个描述人的简单表-人。

此表具有三列:

Person_id, name, surname

我想在此表上创建索引。我知道针对此表的查询将根据姓名(WHERE name = 'sth')以及姓名和姓氏(WHERE name = 'sth' AND surname = 'sth')搜索人员。

所以我在(name, surname)列上创建了索引。在这种情况下,我应该仅在列(name)上添加其他索引吗?

sql database indexing
1个回答
2
投票

不需要两个索引。只要name是索引中的第一列,单个复合索引将同时处理namesurname / name上的条件。

在任何数据库中都应为真。

MySQL具有相当不错的多列索引explanation;它可以帮助您更好地理解它们。

我应该注意,这是指b树索引,它是几乎每个支持索引的数据库中的默认索引和标准索引。它不一定适用于所有索引。例如,基于散列的索引不具有此属性。

© www.soinside.com 2019 - 2024. All rights reserved.