代码之家  ›  专栏  ›  技术社区  ›  Shyju

SQL查询:更改以提高执行时间

  •  0
  • Shyju  · 技术社区  · 16 年前

    我有两张桌子。 categoryMaster(category_id(primarykey)、category_name)和 文件\主文件(file id primarykey,文件\标题,文件\描述,类别\ ID(参考类别主文件的类别ID)

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

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

    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 回复  |  直到 16 年前
        1
  •  2
  •   Chris W    16 年前
    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
    

    应该没问题——如果性能变差,是否检查了执行计划以查看查询的实际运行情况。您有正确的索引来帮助这个查询运行吗?例如,文件主表中类别\id的索引可能会有帮助吗?