DBMS使用索引来提高性能(以示例为例)

时间:2014-02-03 22:55:37

标签: sql performance indexing database

select s.name,c.name,r.edition,r.grade
from students s, courses c, registrations r
where s.student_id=r.student_id
and r.course_id=c.course_id
and r.grade > 10
order by 1,2,3;

在“成绩”列中创建和索引会改善此查询效果吗?

2 个答案:

答案 0 :(得分:2)

ALMOST 用于过滤查询结果的任何字段都将受益于索引,因此,grade上的索引很可能会有所帮助。

远离旧式连接不会提高性能,但这是一个好主意:

SELECT s.name,c.name,r.edition,r.grade
FROM registrations r
JOIN courses c
 ON r.course_id=c.course_id
JOIN students s
 ON s.student_id=r.student_id
WHERE r.grade > 10
ORDER BY s.name,c.name,r.edition

答案 1 :(得分:2)

  

在“成绩”列中创建和索引会改善此查询效果吗?

可能 - 它取决于grade列中值的分散程度 - 如果99%(为了论证的话)值为> 10,编译器可能会认为它不值得无论如何必须基本扫描表时使用索引的麻烦。