【发布时间】:2018-10-11 19:35:06
【问题描述】:
我对查询优化知之甚少,在这里我需要一些帮助。这是我们项目的示例代码,它长期运行的 oracle 查询从 2 个不同的表(student、student_info)中提取数据。
是否有可能对此进行优化? where 子句“和”操作在这里如何工作?
在执行 AND 子句时它是否保持任何顺序?下面的查询如何通过删除行 b.student_id in ('a123','b123','c123') 的代码使之前和之后有所不同。
我们无权在该表列上添加索引。
我们如何在不创建索引的情况下提高性能。
select a.student_id
max(decode(a.marks_limit, 99.99,100,null )) as max_marks,
b.student_city_code "NYC",
from student a,
student_info b
where a.student_id=b.student_id
and a.student_id in ('a123','b123','c123')
and b.student_id in ('a123','b123','c123')
and b.adress_modified > TO_TIMESTAMP('2003/12/13 10:13:18', 'YYYY/MM/DD HH:MI:SS')
group by a.student_id, b.student_city_code;
【问题讨论】:
-
用您真正使用的数据库标记您的问题。
-
SQL Server 还是 Oracle??哪一个?
-
student中有多少条记录?student_info有多少人?
标签: sql oracle query-optimization