这是我一直以来的一个问题。
据我所知,索引的顺序很重要。因此,像[first_name,last_name]
这样的索引与[last_name,first_name]
不同,对吗?
如果我只定义了第一个索引,那么它只用于什么呢?
SELECT * FROM table WHERE first_name="john" AND last_name="doe";
而不是为了
SELECT * FROM table WHERE last_name="doe" AND first_name="john";
由于我正在使用ORM,我不知道这些列将以何种顺序被调用。这是否意味着我必须在所有排列组合上添加索引?如果我有一个2列索引,那么这是可行的,但如果我的索引是在3或4列上呢?
last_name
="doe" ANDfirst_name
="john" 的查询将使用 (first_name
,last_name
) 或 (last_name
,first_name
) 索引非常好。 - ChssPly76INDEX(last_name, first_name)
比其他选项更好。这是因为在first_name
上有“范围”。请参考 Cookbook。 - Rick Jamesfirst_name
,last_name
,full_name
)和查询: wherefirst_name like"doe" and full_name like "john_doe"
,这会使用索引吗? - Chinh Nguyen