我的查询是否有任何改进的余地使其运行得更快?

时间:2014-08-12 15:23:19

标签: sql oracle

我是编写查询的新手,想知道是否可以更快地执行查询

 select 
p.attr_value product,
m.attr_value model,
u.attr_value usage,
t4.attr_value location
       from table1 t1 join table2 t2 on t1.e_subid = t2.e_subid
                      join table4 t4 on t4.loc_id = t1.loc_id
                      join table3 p  on t2.e_cid = p.e_cid 
                      join table3 m  on t2.e_cid = m.e_cid 
                      join table3 u  on t2.e_cid = u.e_cid 
 Where
          t4.attr_name = 'Location' 
          and p.attr_name  = 'Product'
          and m.attr_name  = 'Model'
          and u.attr_name  = 'Usage'
          order by product,location;

1 个答案:

答案 0 :(得分:0)

提高性能的强力方法是创建索引,列用于连接,where子句和顺序

在您的情况下,在以下列

上创建索引
  • table4.attr_name (在where子句中使用)
  • table3.attr_name (在where子句中使用)
  • table1.e_subid (用于连接子句)
  • table2.e_subid (用于连接子句)
  • table4.loc_id (用于连接子句)

请注意,索引可以帮助您更快地选择查询性能。但是减慢更新,插入和删除语句

查看oracle物化视图是否符合您的需求

您在投影中使用的别名'l'未在您的查询中定义。你可能想检查一下