create table foo (id, name varchar(255));
create table foo_values (id, foo_id, name varchar(255), value varchar(255));
create table bar (id, name varchar(255));
create table bar_values (id, bar_id, name varchar(255), position integer);
我们的查询看起来像
select * from foo_values where foo_id=<foo_id> and name=<some-name> order by value;
select * from bar_values where bar_id=<bar_id> and name=<some-name> order by position;
We have a multi key index for foo_id and name in foo_values.
We have a multi key index for bar_id and name in bar_values.
在各自的键索引中包含值和位置是否有意义,或者是否需要它。
答案 0 :(得分:3)
不,我认为它不会产生影响,看看你是否可以衡量它。
答案 1 :(得分:2)
不,您可以按任何列进行排序,无论是否编入索引,但将其编入索引可能会加快查询速度。
答案 2 :(得分:2)
如果你向foo索引添加值并且位置到条形索引它可能会更快,但只有这些查询会降低性能(特别是如果那些列不是相对静态的,因为索引键会移动写作。
所以它有意义(如果在该密钥中有很多行要排序)。
查看索引效果的最佳方法是使用EXPLAIN查看包含和不包含特定索引的执行计划。
答案 3 :(得分:0)
所以,否,order by不需要成为索引的一部分。 虽然,如果有数百万条记录,您应该为每条记录制作一个索引。