我對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