如何减少选择查询的执行时间

时间:2016-08-11 09:13:14

标签: sql sql-server database sql-server-2008

我有一个查询,如下所示。我怀疑它的记录取出时间。有没有比这种方法更好的方法来获取记录?

select   product_code,product_name,price,taxPercentage,discount_type,discount_amount,prof it_type,profit_amount,purchase_code, qty 
from (
   select distinct p.product_code,p.product_name,pid.price,t.percentage as      taxPercentage,p.discount_type,p.discount_amount,p.profit_type,p.profit_amount,
    pu.purchase_code,pid.quantity+isnull(sum(sri.quantity),0) -isnull(sum(si.quantity),0) -isnull(sum(pri.quantity),0) as qty 
   from tbl_product p 
   left join tbl_purchase_item pid on p.product_code=pid.product_code 
   left join tbl_purchase pu on pu.purchase_code=pid.purchase_code 
   left join tbl_tax t on t.tax_code=p.tax_code
   left join tbl_sale_item si on si.product_code=p.product_code
   left join tbl_sale s on s.sale_code=si.sale_code
   left join tbl_sale_return sr on sr.sale_code=s.sale_code
   left join tbl_sale_return_item sri on      sri.sale_return_code=sr.sale_return_code
   left join tbl_purchase_return_item pri on pri.purchase_code=pu.purchase_code
   group by p.product_code,p.product_name,pid.price,t.percentage,p.discount_type,p.discount_amount,p.profit_type,p.profit_amount,pu.purchase_code,pid.quantity
) as abc 
where qty >0

2 个答案:

答案 0 :(得分:3)

我不知道您的数据库是怎样的。你有太多的联接,我想这是缓慢的根源。

首先,确保已为连接中使用的所有列编制索引。

如果这没有帮助,请尝试执行一些Denormalization。这样,您将在数据库中引入一些冗余,但读取时间将会改善。

答案 1 :(得分:0)

  1. 使用较大的表
  2. 加入较小的表
  3. 考虑表格上的索引