我有一个关系员工(employee_id,fisrtname,lastname,salary,department_id)。如果我想使用二进制搜索执行查询,则查询类似于:
SELECT *
FROM employee
WHERE salary> 10000
AND department_id = 60
我应该在salary和department_id上的索引,还是两者都有最低成本(在磁盘中读取的最小块数)?
谢谢!
答案 0 :(得分:2)
对于您的查询,最佳索引为employee(department_id, salary)
。
这是一个综合指数。列必须按此顺序排列,因为department_id
具有相等比较而salary
具有不等式。
这是如何实现的并不是真正相关的。大多数数据库将这样的索引存储为b树,这将导致“二进制”搜索。但是,数据库可以利用多个处理器和多个磁盘。