(这是在Rails应用程序中)
给出两个表:
items
id, int(11), primary key
name, varchar(30)
choices
id, int(11), primary key
item_id, int(11), foreign key
identifier, varchar(5)
name, varchar(30)
针对选择的大多数查询都是:
SELECT identifier, name FROM choices WHERE item_id = n ORDER BY identifier;
我们都假设我们都同意索引可以帮助排序性能(我知道我们都没有,这没关系,但是对于这个问题我们假设)。
索引选项的最佳方式是什么,以便获得搜索和排序优势:
或
答案 0 :(得分:1)
item_id, identifier
上的1个复合索引将更适合您的查询,因为这样的索引将覆盖。
答案 1 :(得分:1)
您想要复合索引。使用2个单独的索引,mysql必须在使用索引进行过滤或使用索引进行排序之间进行选择(因为MySQL在查询中每个表只使用一个索引)。 More on how MySQL uses indexes when sorting(你的案例是他们提供的一个例子)。
答案 2 :(得分:0)
我从不使用rails但是不能使用B + Tree索引item_id和标识符吗? 在那里你会有快速查询,并对结果进行排序。