我们一直在经历对作业性能的担忧,幸运的是,我可以找到导致缓慢的查询。
select name from Student a, Student_Temp b
where a.id = b.id and
a.name in (select name from Student
group by name having count(*) = @sno)
group by a.name having count(*) = @sno
OPTION (MERGE JOIN, LOOP JOIN)这个特定的查询多次被反复调用,降低了性能。
Student表有800万条记录,Student_temp每次在迭代过程中接收5-20条记录。Student表具有复合主键on ( id和name)和sno = No of Student_Temp中的记录。
我的问题如下: 1)为什么这个查询会显示性能问题。( 2)你们能给出一种更有效的方式来写这篇文章吗?
提前谢谢!
发布于 2013-12-20 10:19:59
这是不必要地重复同样的逻辑。你真的只想:
试试这个:
SELECT
name
FROM
Student a JOIN
Student_Temp b ON a.id = b.id
GROUP BY
name
HAVING
count(*) = @sno发布于 2013-12-20 12:44:13
,给你,
select name
from Student a
inner join Student_Temp b
on a.id = b.id
group by a.name
HAVING COUNT(*) = @snohttps://stackoverflow.com/questions/20700942
复制相似问题