其中
SELECT     dbo.DocLinkArchive.*,   
                            dbo.Doc_InceptArchiveDoc.OldTableNo   AS   DocumentCode,   
                            dbo.Doc_InceptArchiveDoc.FileTitle   AS   Title,   
                            dbo.Doc_InceptArchiveDoc.Resume   AS   Resume,   
                            dbo.Doc_InceptArchiveDoc.ThemeWord   AS   SubjectWord,   
                            dbo.Doc_InceptArchiveDoc.secretGrade   AS   secretGrade,   
                            dbo.Doc_InceptArchiveDoc.FileSize   AS   FileSize,   
                            dbo.Doc_InceptArchiveDoc.FileContent   AS   FileContent 
                FROM   dbo.DocLinkArchive   INNER   JOIN 
                            dbo.Doc_InceptArchiveDoc   ON   
                            dbo.DocLinkArchive.ID   =   dbo.Doc_InceptArchiveDoc.ID占查询成本的46%,平均查询时间在1分半左右

解决方案 »

  1.   

    去掉括号:
     LEFT   OUTER   JOIN 
                     dbo.Doc_PrmDetails b  on   DelFlag   =   0   AND   PrmID   =   100  a.secretGrade   =   b.ID -----
    查看一下条件的是否有索引
      

  2.   

    去嵌套查询,去外连接!改用
    SELECT dbo.DocLinkArchive.DocumentID, 
     dbo.DocLinkArchive.ID, 
     dbo.DocLinkArchive.IsFiling, 
     dbo.DocLinkArchive.DocumentCode, 
     dbo.Doc_InceptArchiveDoc.OldTableNo AS DocumentCode, 
     dbo.Doc_InceptArchiveDoc.FileTitle AS Title, 
     dbo.Doc_InceptArchiveDoc.Resume AS Resume, 
     dbo.Doc_InceptArchiveDoc.ThemeWord AS SubjectWord, 
     --dbo.Doc_InceptArchiveDoc.secretGrade AS secretGrade, 
     dbo.Doc_InceptArchiveDoc.FileSize AS FileSize, 
     dbo.Doc_InceptArchiveDoc.FileContent AS FileContent, 
     dbo.Doc_PrmDetails.Doc_PrmDetails AS secretGrade from
    dbo.DocLinkArchive,
    dbo.Doc_InceptArchiveDo,
    dbo.Doc_PrmDetails 
    where dbo.DocLinkArchive.ID = dbo.Doc_InceptArchiveDoc.ID 
    and Doc_InceptArchiveDoc.secretGrade = Doc_PrmDetails.ID
    union all 
    SELECT dbo.DocLinkArchive.DocumentID, 
     dbo.DocLinkArchive.ID, 
     dbo.DocLinkArchive.IsFiling, 
     dbo.DocLinkArchive.DocumentCode, 
     dbo.Doc_InceptArchiveDoc.OldTableNo AS DocumentCode, 
     dbo.Doc_InceptArchiveDoc.FileTitle AS Title, 
     dbo.Doc_InceptArchiveDoc.Resume AS Resume, 
     dbo.Doc_InceptArchiveDoc.ThemeWord AS SubjectWord, 
     --dbo.Doc_InceptArchiveDoc.secretGrade AS secretGrade, 
     dbo.Doc_InceptArchiveDoc.FileSize AS FileSize, 
     dbo.Doc_InceptArchiveDoc.FileContent AS FileContent, 
     null from
    dbo.DocLinkArchive,
    dbo.Doc_InceptArchiveDoc
    where dbo.DocLinkArchive.ID = dbo.Doc_InceptArchiveDoc.ID 
    and not exist (select 'X' from Doc_InceptArchiveDoc where Doc_InceptArchiveDoc.secretGrade = Doc_PrmDetails.ID)
      

  3.   

    试试看上面的语句,反正思想就是“去嵌套查询,去外连接”,然后用三个表连接查询再“union all(不要是union)” 不匹配“not exist(不要用not in)” 最后一个表的条件的数据