建立合理的索引,避免扫描多余数据,避免表扫描!几百万条数据,照样几十毫秒完成查询。关于SQL查询效率,100w数据,查询只要1秒,与您分享!

查询效率分析: 子查询为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。在这种情况下可以考虑用联接查询来取代。 如果要用子查询,那就用EXISTS替代IN、用NOT EXISTS替代NOT IN。因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高。无论在哪种情况下,NOT IN都是最低效的。因为它对子查询中的表执行了一个全表遍历。

建立合理的索引,避免扫描多余数据,避免表扫描! 几百万条数据,照样几十毫秒完成查询.

机器情况 p4: 2.4 内存: 1 G os: windows 2003 数据库: ms sql server 2000 目的: 查询性能测试,比较两种查询的性能

SQL查询效率 step by step

-- setp 1. -- 建表

create table t_userinfo ( userid int identity(1,1) primary key nonclustered, nick varchar(50) not null default '', classid int not null default 0, writetime datetime not null default getdate() ) go

-- 建索引

create clustered index ix_userinfo_classid on t_userinfo(classid) go

-- step 2.

declare @i int declare @k int declare @nick varchar(10) set @i = 1 while @i<1000000 begin set @k = @i % 10 set @nick = convert(varchar,@i) insert into t_userinfo(nick,classid,writetime) values(@nick,@k,getdate()) set @i = @i + 1 end

-- 耗时 08:27 ,需要耐心等待

-- step 3.

select top 20 userid,nick,classid,writetime from t_userinfo where userid not in ( select top 900000 userid from t_userinfo order by userid asc )

-- 耗时 8 秒 ,够长的

-- step 4.

select a.userid,b.nick,b.classid,b.writetime from ( select top 20 a.userid from ( select top 900020 userid from t_userinfo order by userid asc ) a order by a.userid desc ) a inner join t_userinfo b on a.userid = b.userid order by a.userid asc

-- 耗时 1 秒,太快了吧,不可以思议

-- step 5 where 查询

select top 20 userid,nick,classid,writetime from t_userinfo where classid = 1 and userid not in ( select top 90000 userid from t_userinfo where classid = 1 order by userid asc )

-- 耗时 2 秒

-- step 6 where 查询

select a.userid,b.nick,b.classid,b.writetime from ( select top 20 a.userid from ( select top 90000 userid from t_userinfo where classid = 1 order by userid asc ) a order by a.userid desc ) a inner join t_userinfo b on a.userid = b.userid order by a.userid asc

-- 查询分析器显示不到 1 秒.

转载于:https://www.cnblogs.com/hx214blog/archive/2012/05/23/2514761.html

SQLServer优化二相关推荐

  1. 基于粒子群优化二维Otsu的肺CT图像分割算法

    1.内容简介 略 488-可以交流.咨询.答疑 2.内容说明 随着大气污染的加剧和环境的破坏,肺癌患者急剧增加,肺癌成为危害人 类健康最大的恶性肿瘤,因此肺癌治疗迫在眉睫.当前,肺肿瘤检查的主要方 式 ...

  2. A star算法优化二

    本文目的是对A*寻路算法所生成的路径进行一些人性化的调整,使其看起来不至于太机械化.关于A*算法的原理与实现,读者可以阅读其他资料,这里不再详细阐述. 如何写估价函数 A*寻路算法本质上是一个有方向性 ...

  3. PG数据库性能优化二

    一.排序: 1. 尽量避免 2. 排序的数据量尽量少,并保证在内存里完成排序. (至于具体什么数据量能在内存中完成排序,不同数据库有不同的配置: oracle是sort_area_size: post ...

  4. Mysql性能优化二

    接上一篇Mysql性能优化一 建立适当的索引 说起提高数据库性能,索引是最物美价廉的东西了.不用加内存,不用改程序,不用调sql,只要执行个正确的'create index',查询速度就可能提高百倍千 ...

  5. SQL优化二(SQL性能调优)

    一·.前言:这篇博文内容非原创,是我们公司的架构师给我们做技术培训的时候讲的内容,我稍微整理了下,借花献佛.这篇博文只是做一个大概的科普介绍,毕竟SQL优化的知识太大了,几乎可以用一本书来介绍.另外, ...

  6. php性能优化二(PHP配置php.ini)

    PHP优化对于PHP的优化主要是对php.ini中的相关主要参数进行合理调整和设置,以下我们就来看看php.ini中的一些对性能影响较大的参数应该如何设置. # vi /etc/PHP.ini (1) ...

  7. 【HDU - 6185】Covering(矩阵快速幂优化二维dp,高斯消元,轮廓线dp打表)

    题干: Bob's school has a big playground, boys and girls always play games here after school. To protec ...

  8. MySQL索引优化二

    1.建表 CREATE TABLE staffs (   id INT PRIMARY KEY AUTO_INCREMENT,   NAME VARCHAR (24)  NULL DEFAULT '' ...

  9. 优化二、XWPFDocument 生成doc、docx 功能优化(循环数据可不用手动添加)可在表格中插入图片

    接上一篇文章 注:Consts 类放到了 第三篇文章里面 ** 一.优化点: ** 优化过后 直接调用 CreateWordPoiUtils 中listToArray 方法 即可: 参数为 对象集合 ...

最新文章

  1. WPF DispatcherTimer(定时器应用) 无人触摸60s自动关闭窗口
  2. EXTJS实现的WEBQQ可以传文件了哈
  3. Spark集群模式概述
  4. Druid 连接池 JDBCUtils 工具类的使用
  5. 漫步凸分析七——凸函数闭包
  6. VUE3模板ref引用子组件或者子组件的方法
  7. java的Junit单元测试
  8. 权限问题导致无法删除ftp文件
  9. 《认清C++语言》---接口继承和实现继承
  10. JVM内存管理--GC算法精解(五分钟教你终极算法---分代搜集算法)
  11. 微信小程序 腾讯地图大头针定位,获取当前地址,地图移动选点,定位当前位置
  12. 三轴机械臂图纸支持3D打印支持stm32源码3D图纸运动解算说明
  13. Centos 7.4 防火墙关闭命令
  14. 一文看尽微信AI团队打造扫一扫植物识别利器
  15. JAVA——多线程【线程终止、中断、插队】
  16. 图像处理特征不变算子系列之Moravec算子(一)
  17. 一次性删除页面中所有console.log()
  18. “善”用区块链:善是初心,链是保障
  19. 华为p10手机安装linux,鸿蒙OS手机适配进度曝光!麒麟970悬了
  20. L1-054~L1-056

热门文章

  1. python网格搜索核函数_(转载)Python机器学习笔记GridSearchCV(网格搜索)
  2. osm数据下载 python_GIS Experience (十):OSM数据获取
  3. ajax异步加载和cmd,异步传输Ajax(JQ)
  4. win7系统登录其他服务器端口,win7系统添加打印服务器端口的操作方法
  5. barrons ap计算机科学,巴朗ap心理学barrons ap psychology, 5th edition-201-240.pdf
  6. Java 将中缀表达式转换成后缀表达式
  7. eda技术试卷_《EDA技术》试题及答案
  8. access求斐波拉契数列_打印目录,斐波那契数列的递归与循环,牧场牛数
  9. ado execute open区别_二极管IN4148和IN4007的应用区别
  10. d3.js 旋转图形_MATLAB 的图形处理