请教两个查询的速度差别
<P>两张表A和B</P><P>A表:ARNO int,SENO int, BARC varchar(13), QTY numeric(16,4)BARC字段无索引, 共4407条记录</P>
<P>B表:SP_ID int, NAME varchar(50), BARC varchar(13), ...... BARC字段unique索引,共16000条记录</P>
<P>两个查询:</P>
<P>select * from A where BARC not in (select BARC from B)</P>
<P>select * from A where BARC not in (select BARC from A,B where A.BARC=B.BARC)</P>
<P>第一个查询在A表中找BARC不在B表中的记录,查询时间很长</P>
<P>第二个查询在A表中找BARC不在A、B两表共有的记录的记录,查询时间很短</P>
<P>请教查询时间长短是否因为两个查询查找的记录总数不同造成的,若要用第一个查询是否有办法通过建立索引的办法解决查询时间的问题(由于在打开窗口时还有其它两个DW同时要打开,查询时间简直无法容忍)</P> 4407*16000=70512000次 查询,按索引树深度3计算,算算这个I/O量吧,呵呵<br>
[此贴子已经被作者于2005-8-30 9:12:21编辑过]
<P>Even the 2nd query is NOT optimial for performance !</P>
<P>Do this instead :</P>
<P>select * from A where not exists (</P>
<P> select 1 from B where A.BARC = B.BARC)</P>
<P>set statistics time on and set statistics io on</P>
<P>and run the queries, you will see a big difference ...</P>
页:
[1]