关系数据库中的二进制搜索

时间:2014-04-25 22:20:07

标签: database query-optimization

我有一个关系员工(employee_id,fisrtname,lastname,salary,department_id)。如果我想使用二进制搜索执行查询,则查询类似于:

SELECT *
FROM employee
WHERE salary> 10000
AND department_id = 60

我应该在salary和department_id上的索引,还是两者都有最低成本(在磁盘中读取的最小块数)?

谢谢!

1 个答案:

答案 0 :(得分:2)

对于您的查询,最佳索引为employee(department_id, salary)

这是一个综合指数。列必须按此顺序排列,因为department_id具有相等比较而salary具有不等式。

这是如何实现的并不是真正相关的。大多数数据库将这样的索引存储为b树,这将导致“二进制”搜索。但是,数据库可以利用多个处理器和多个磁盘。