2015-05-10 74 views
2

想象一下,我有一张有三个简单列的表格; PersonNamePersonLastNamePhone_Number索引多列

我已经创建和索引,如

CREATE INDEX index1 ON phonebook (PersonName,PersonLastName); 

当我搜索了名的表现肯定会增加,但怎么样,如果我搜索姓氏?根据PersonNamePersonLastName或者仅为PersonName的单个索引,此声明是否会生成两种不同的索引?

+0

MySQL在多列索引上有很好的文档(这些想法适用于大多数数据库):https://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html。 –

+0

您正在使用哪些DBMS? Postgres的?甲骨文?索引_usage_高度依赖于DBMS和查询优化器 –

回答

0

此声明仅创建一个索引,按PersonName排序,然后按PersonLastName排序。如果您的查询只搜索PersonLastName而不是PersonName,则它不会有用。你可以,但是,相反的顺序来创建一个额外的指标:

CREATE INDEX another_index ON phonebook (PersonLastName, PersonName); 

这不仅是可能的 - 它是,事实上,一个普遍的做法。