预览模式: 普通 | 列表

海量查询的数据优化(八)


很多资料上都显示说,exists要比in的执行效率要高,同时应尽可能的用not exists来代替not in。但事实上,我试验了一下,发现二者无论是前面带不带not,二者之间的执行效率都是一样的。因为涉及子查询,我们试验这次用SQL SERVER自带的pubs数据库。运行前我们可以把SQL SERVER的statistics I/O状态打开。 (1)select title,price from titles where title_id in (select title_id from sales where qty>30) 该句的执行结果为: 表 'sales'。扫描计数 18,逻辑读 56 次,物理读 0 次,预读 0 次。 表 'titles'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。    (2)select title,price from titles where exists (select * from sales where sales.title_id=titles.title_id and qty>30) 第二句的执行结果为: 表 'sales'。扫描计数 18,逻辑读 56 次,物理读 0 次,预读 0 次。 表 'titles'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。 我们从此可以看到用exists和用in的执行效率是一样的。 7、用函数charindex()和前面加通配符%的LIKE执行效率一样 前面,我们谈到,如果在LIKE前面加上通配符%,那么将会引起全表扫描,所以其执行效率是低下的。但有的资料介绍说,用函数charindex()来代替LIKE速度会有大的提升,经我试验,发现这种说明也是错误的: select gid,title,fariqi,reader from tgongwen where charindex('刑侦支队',reader)>0 and fariqi>'2004-5-5' 用时:7秒,另外:扫描计数 4,逻辑读 7155 次,物理读 0 次,预读 0 次。 select gid,title,fariqi,reader from tgongwen where reader like '%' + '刑侦支队' + '%' and fariqi>'2004-5-5' 用时:7秒,另外:扫描计数 4,逻辑读 7155 次,物理读 0 次,预读 0 次。

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 3

富基旋风移动营销平台



客户介绍:

  eFuture富基融通科技有限公司是亚太地区零售和消费品行业软件及电子服务的领导供应商之一,2006年10月31日登陆美国NASDAQ资本市场(股票交易代码:EFUT)。中国总部在北京,在上海、广州、武汉设有软件开发基地。现有员工800多名,其中技术团队400多人。全国设有23个办事处,35个城市服务站。2008年正式成立eFuture中国流通研究院。

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 25

宁夏联通wap平台




客户介绍:

查看更多...

分类:其他 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 19