我有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条记录)
答案 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索引可能有帮助吗?