我对SQL仍然相当陌生,所以我想知道如果我正在做这个最优化的方式。Optomizing sql计数查询
SELECT DISTINCT ACCOUNTID, ACCOUNT_NAME
(SELECT COUNT(*)
FROM TICKET
WHERE (ACCOUNTID = OPPORTUNITY.ACCOUNTID)) AS [Number Of Tickets],
(SELECT COUNT(*)
FROM TICKET
WHERE (ACCOUNTID = OPPORTUNITY.ACCOUNTID) AND (STATUSCODE = 1 OR
STATUSCODE = 2 OR
STATUSCODE = 3)) AS [Active Tickets]
from OPPORTUNITY
where AccountID > @LowerBound and AccountID < @UpperBound
我所试图做的就是让所有账户的清单,并把它显示帐户多少张门票有多少是有效的(有一个状态代码为1,2,或3)。选择内部选择正确的方式来做到这一点,或者是否有一种方法可以使用类似group by的方法来完成。
我最大的担忧是速度,只需拉动20条记录需要3-5秒,查询可能会有1000条结果。
我不是DBA,所以表格模式的任何改变都不是强制性的,但需要一些上层管理者的恳求。
这是正在针对SQL Server 2000
EDIT-- 所有地方问它,我就可以检查答案的运行。按升序排列的机会和机票指数。
是的,格式化特别是在处理标签页时有点棘手和有时是“随机的”:-)很高兴知道您了解正确的格式 - 为可读性做出巨大改变! – 2010-07-15 15:49:41