Sql server 如何优化SQL查询

Sql server 如何优化SQL查询,sql-server,query-optimization,Sql Server,Query Optimization,我有一个SQL Server表Top\u Research\u Areas,其中包含诸如 aid res_category_id research_area Paper_Count --------------------------------------------------------------- 2937 33 markov chain 3 293

我有一个SQL Server表
Top\u Research\u Areas
,其中包含诸如

aid     res_category_id    research_area            Paper_Count     
---------------------------------------------------------------
2937    33                 markov chain             3               
2937    33                 markov decision process  1               
2937    1                  linear system            1               
11120   29                 aspect oriented prog     4               
11120   1                  graph cut                2               
11120   1                  optimization problem     2               
12403   2                  differential equation    7               
12403   1                  data structure           2               
12403   1                  problem solving          1               
35786   1                  complete graphs          11              
35786   1                  graph cut                10              
35786   NULL               NULL                     2               
49261   3                  finite automata          6               
49261   3                  finite element           2               
49261   14                 database                 2                
78841   5                  genetic programming      6               
78841   23                 active learning          2               
78841   28                 pattern matching         1                 
现在我想从另一个表中选择
pid
,即
sub\u-aminer\u-paper
,用于表
Top\u-Research\u-area
,而表
sub\u-aminer\u-paper
包含列,即
aid
pid
Research\u-area
res\u category\u id
和更多列

此外,
Top\u Research\u area
仅包含Top\u 3
Research\u area
的记录,而表
sub\u aminer\u paper
包含的不是
Top\u Research\u area
中的这些记录

我使用了这个查询,即

SELECT
    aid, pid, research_area
FROM
    sub_aminer_paper 
WHERE
    aid IN (2937, 11120)
    AND research_area IN (SELECT
                              research_area 
                          FROM 
                              Top_Research_Areas 
                          WHERE
                              aid IN (2937, 11120))
ORDER BY aid ASC
现在的问题是,当通过匹配两个表中的
research\u area
,从
sub\u aminer\u paper
检索
pid
,它会给我输出,例如,如果我检索两个
aid
的记录,即
2937
11120
,它会给我以下输出:

我们可以看到,前2个
aid
纸张计数是
3+1+1+4+2+2
,即它应该给出
13
记录,但是它给出了
14
,因为
research\u区域
优化问题
实际上属于
aid
11120
在表
Top\u研究区域
中,但通过在
子句中使用
来匹配
research\u区域
它是作为
研究区域
的混合体这两个
都有助于
,而我需要输出
13
记录,而不是
14

如何处理


请帮忙,谢谢

可能有一篇关于aid 2937的“优化问题”的论文,但它没有被记录在顶级研究领域

请参阅id本帮助:从存在(援助、研究领域)组合的子文档中选择

aid 2937可能有一篇关于“优化问题”的论文,但它并没有登录到顶级研究领域。@Amir--非常感谢,这个查询可以实现预期的效果
SELECT
    sap.aid, sap.pid, sap.research_area
FROM
    sub_aminer_paper  sap
WHERE
  sap.AID IN (2937, 11120) --- For indexing which I'm assuming this column has
  AND EXISTS (SELECT 1 FROM Top_Research_Areas tra WHERE tra.aid = sap.aid and tra.research_area = sap.research_area and tra.aid in (2937,11120))