对两个表中的no字段建立索引,同时改语句:
select * from student01
where not exists
(select 1 from student02 where student02.no=student01.no)to:bigysw(大花脸)
你看到的是非技术区,点技术区可以看到有分数的问题。
select * from student01
where not exists
(select 1 from student02 where student02.no=student01.no)to:bigysw(大花脸)
你看到的是非技术区,点技术区可以看到有分数的问题。
你select * 这是最大的败笔!!
对c/s数据库,返回的结果集是最大的瓶颈,一定要返回的结果集最小
你的设计有问题,你绝对不会同时用到2万纪录的所有字段 select * 做甚?
用什么,查什么
in和not in 先执行子查询,返回结果集,再一个一个比较。
exists和not exists,如果student02的NO有索引,那就进行折半查找。
另一个如在SQL SERVER上建立存储过程速度将大大提高
2.使用Exists查询(在我的测试中,Exists对于效率的提高会依赖于字段数量,数据库的大小,但总体上会有相当的提高)
3.加索引
4.使用Query Analyzer的Index Tuning Wizard进行索引优化碰到性能优化的情况时,可以使用query analyzer里面的性能分析器对查询进行分析,然后再一个环节一个环节的改善。
_______________________________
[Haier]
in和not in 没有利用到student02的NO索引