lllidmud 发表于 2005-8-28 18:15:48

请教两个查询的速度差别

<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>

flybean 发表于 2005-8-30 08:40:04

4407*16000=70512000次 查询,按索引树深度3计算,算算这个I/O量吧,呵呵<br>

[此贴子已经被作者于2005-8-30 9:12:21编辑过]

epang 发表于 2005-9-3 01:58:33

<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]
查看完整版本: 请教两个查询的速度差别

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com