SQL查询:更改以改善执行时间

时间:2009-07-29 10:01:34

标签: sql-server

我有2张桌子。 CategoryMaster(CATEGORY_ID(primaryKey),Category_Name)和 FILE_MASTER(FileId primaryKey,FILE_TITLE,FILE_DESCRIPTION,CATEGORY_ID(参考类别master的Category Id))

现在我想要一个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

如何重新构建上述查询,使其返回相同的结果集,但在很短的时间内执行(假设ItemMaster表中有超过20000条记录)

1 个答案:

答案 0 :(得分: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索引可能有帮助吗?