Sql server SQL查询:更改以缩短执行时间

Sql server SQL查询:更改以缩短执行时间,sql-server,Sql Server,我有两张桌子。 CategoryMaster(类别ID(primaryKey)、类别名称)和 文件主控(文件ID主控键、文件标题、文件描述、类别ID(参考类别主控的类别ID)) 现在我想要一个SQL查询,它将返回一个包含两列的结果集:Categories和在Categories下创建的文件数 我使用下面的查询来获取数据。它正在返回正确的数据 select Category_Name,Count(FILE_TITLE) Item_Count from ( select cm.Categor

我有两张桌子。 CategoryMaster(类别ID(primaryKey)、类别名称)和 文件主控(文件ID主控键、文件标题、文件描述、类别ID(参考类别主控的类别ID))

现在我想要一个SQL查询,它将返回一个包含两列的结果集:Categories和在Categories下创建的文件数

我使用下面的查询来获取数据。它正在返回正确的数据

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多条记录)

应该可以-如果您的性能很差,您是否检查了执行计划以查看查询实际运行情况。您是否有正确的索引来帮助此查询的运行-例如,在文件主表中的Category_ID上的索引可能会有所帮助

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