假设我有一个数据库表,列a,b和c。我打算对所有三列进行查询,但我不确定我查询的是哪些列。有一个在一个索引极大加快了搜索的表足够的行,但感觉不对的可能指标的所有排列(像这样):有没有更好的方法来索引多列而不是为每个排列创建一个索引?
a
b
c
a, b
a, c
b, c
a, b, c
有没有更好的方式来处理这个问题? (这很可能我只是很好地索引a,b,c,因为这会很快减少行数,但是我想知道是否有更好的方法。)
如果您需要在实际数据中,更具体的例子是城市,州和邮政编码。另外,我正在使用MySQL数据库。
这是正确的答案。 MySQL的工作方式相同,这种技术被称为“最左前缀”。从http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html上的MySQL手册:“如果表有多列索引,索引的任何最左边的前缀都可以使用例如,如果您在(col1,col2,col3)上有三列索引,则您在(col1),(col1,col2)和(col1,col2,col3)上具有索引搜索功能, “ – zombat 2009-07-07 03:20:32
嗯,我应该知道这一点。 ;)非常棒,我会给这个镜头。 – 2009-07-07 03:28:26
您可能还需要a,c,但这取决于您的查询的样子。您可能还需要单独的索引来涵盖Andriyev提到的OR情景,不确定。 – 2009-07-07 03:38:36