sql server - How SQL queries may be optimized -
i have sql server table top_research_areas
contains data i.e.
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
now want select pid
table i.e. sub_aminer_paper
aid
's in table top_research_areas
, whereas table sub_aminer_paper
contains columns i.e. aid
, pid
, research_area
, res_category_id
, more columns too.
moreover top_research_areas
contains records top_3 research_area
's whereas table sub_aminer_paper
contains other these records aid
's in top_research_areas
.
i have used query i.e.
select aid, pid, research_area sub_aminer_paper aid in (2937, 11120) , research_area in (select research_area top_research_areas aid in (2937, 11120)) order aid asc
now issue is, when retrieving pid
's sub_aminer_paper
matching research_area
's in both tables, gives me output e.g. if retrieve records 2 aid
's i.e. 2937
, 11120
, gives me output as:
we can see paper_count
top 2 aid
's 3+1+1+4+2+2
i.e. should give 13
records, giving 14
because of research_area
i.e. optimization problem
belongs aid
i.e. 11120
in table top_research_areas
using in
clause matching research_area
taking mixture of research_area
's of both aid
's, whereas need 13
records in output instead of 14
.
how can handled ?
please , thanks!
there paper on "optimization problem" aid 2937 isn't logged in top_research_areas.
see id helps : select sub_aminer_paper combination of (aid,research_area) exists,
select sap.aid, sap.pid, sap.research_area sub_aminer_paper sap sap.aid in (2937, 11120) --- indexing i'm assuming column has , exists (select 1 top_research_areas tra tra.aid = sap.aid , tra.research_area = sap.research_area , tra.aid in (2937,11120))
Comments
Post a Comment