Sql server 如何优化SQL查询
我有一个SQL Server表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
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 3Research\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))