2009-07-29 45 views
0

我有2個表。 CategoryMaster(CATEGORY_ID(PrimaryKey的),CATEGORY_NAME)和 FILE_MASTER(FILEID的PrimaryKey,FILE_TITLE,FILE_DESCRIPTION,CATEGORY_ID(請參閱類主站)的類別編號)SQL查詢:更改以提高執行時間

現在我想有一個SQL查詢將返回一個結果與2列:分類和在該分類下創建的文件數量。

我正在使用下面的查詢來獲取數據。它正在返回正確的數據。

select Category_Name,Count(FILE_TITLE) Item_Count 
from (
    select cm.Category_Name,fm.FILE_TITLE,FILE_DESCRIPTION 
    from CATEGORY_MASTER cm, FILE_MASTER fm 
    where fm.CATEGORY_ID=cm.CATEGORY_ID 
) AllRecords 
group by Category_Name 

我如何重構上面的查詢,這樣它會返回相同的結果集,但在很短的時間執行(假設有超過20000條記錄ItemMaster表)

回答

2
select CM.Category_Name, Count(FM.Category_ID) Item_Count 
from CategoryMaster CM 
left join FILE_MASTER FM on CM.Category_ID = FM.Category_ID 
group by CM.Category_Name 

應該沒問題 - 如果性能不佳,是否檢查過執行計劃以查看查詢的實際運行方式。您是否有正確的索引來幫助查詢運行 - 例如FILE_MASTER表中的Category_ID索引可能會有幫助?