2017-03-07 34 views
0

我的查询执行时间太长。请帮我简化一下? 这里是我的查询:如何简化SQL选择命令

 SELECT uid,etop_id,SUM(amount) AS amt, 
        (SELECT m_name FROM member_details WHERE etop_id=a.etop_id) AS m_name, 
        (SELECT SUM(amount) FROM hidden_charges WHERE etop_id=a.etop_id 

    AND entry_date BETWEEN @date1 AND @date2 AND particular IS NULL 
        ) AS hidden, 
        (SELECT (SUM(credit)-SUM(debit)) 
         FROM member_transaction 
         WHERE member_id=a.uid 
         AND is_succeed=1 
         AND isnull(reference_id,0) NOT IN(SELECT 
user_reference_id FROM recharge_request WHERE status=7) 
        ) AS balance, 
        ( SELECT TOP 1 credit 
         FROM member_transaction 
         WHERE member_id=a.uid 
         AND credit>0 
         AND entry_date=(SELECT MAX(entry_date) 
             FROM member_transaction 
             WHERE member_id=a.uid AND credit>0)) AS credit 
      FROM recharge_request a WHERE status=1 AND rdate BETWEEN @date1 AND @date2 
      GROUP BY etop_id, uid ORDER BY amt DESC 
+1

您是否知道可能的sql注入? – Andreas

+0

是的,我用参数替换文本框。 –

+0

@AmitMishra。 。 。通过删除子句来简化查询,找出需要花费的时间。然后用简化查询问另一个问题。 –

回答

0

对于大型查询我倾向于数据弹出到一个临时表,并用它来查询。

Select * 
Into #Table 
From member_transaction 
Where member_id=a.uid 

然后只是查询#Table而不是member_transaction,应该加快速度。