SQLServer优化二
建立合理的索引,避免扫描多余数据,避免表扫描!几百万条数据,照样几十毫秒完成查询。关于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优化二相关推荐
- 基于粒子群优化二维Otsu的肺CT图像分割算法
1.内容简介 略 488-可以交流.咨询.答疑 2.内容说明 随着大气污染的加剧和环境的破坏,肺癌患者急剧增加,肺癌成为危害人 类健康最大的恶性肿瘤,因此肺癌治疗迫在眉睫.当前,肺肿瘤检查的主要方 式 ...
- A star算法优化二
本文目的是对A*寻路算法所生成的路径进行一些人性化的调整,使其看起来不至于太机械化.关于A*算法的原理与实现,读者可以阅读其他资料,这里不再详细阐述. 如何写估价函数 A*寻路算法本质上是一个有方向性 ...
- PG数据库性能优化二
一.排序: 1. 尽量避免 2. 排序的数据量尽量少,并保证在内存里完成排序. (至于具体什么数据量能在内存中完成排序,不同数据库有不同的配置: oracle是sort_area_size: post ...
- Mysql性能优化二
接上一篇Mysql性能优化一 建立适当的索引 说起提高数据库性能,索引是最物美价廉的东西了.不用加内存,不用改程序,不用调sql,只要执行个正确的'create index',查询速度就可能提高百倍千 ...
- SQL优化二(SQL性能调优)
一·.前言:这篇博文内容非原创,是我们公司的架构师给我们做技术培训的时候讲的内容,我稍微整理了下,借花献佛.这篇博文只是做一个大概的科普介绍,毕竟SQL优化的知识太大了,几乎可以用一本书来介绍.另外, ...
- php性能优化二(PHP配置php.ini)
PHP优化对于PHP的优化主要是对php.ini中的相关主要参数进行合理调整和设置,以下我们就来看看php.ini中的一些对性能影响较大的参数应该如何设置. # vi /etc/PHP.ini (1) ...
- 【HDU - 6185】Covering(矩阵快速幂优化二维dp,高斯消元,轮廓线dp打表)
题干: Bob's school has a big playground, boys and girls always play games here after school. To protec ...
- MySQL索引优化二
1.建表 CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (24) NULL DEFAULT '' ...
- 优化二、XWPFDocument 生成doc、docx 功能优化(循环数据可不用手动添加)可在表格中插入图片
接上一篇文章 注:Consts 类放到了 第三篇文章里面 ** 一.优化点: ** 优化过后 直接调用 CreateWordPoiUtils 中listToArray 方法 即可: 参数为 对象集合 ...
最新文章
- WPF DispatcherTimer(定时器应用) 无人触摸60s自动关闭窗口
- EXTJS实现的WEBQQ可以传文件了哈
- Spark集群模式概述
- Druid 连接池 JDBCUtils 工具类的使用
- 漫步凸分析七——凸函数闭包
- VUE3模板ref引用子组件或者子组件的方法
- java的Junit单元测试
- 权限问题导致无法删除ftp文件
- 《认清C++语言》---接口继承和实现继承
- JVM内存管理--GC算法精解(五分钟教你终极算法---分代搜集算法)
- 微信小程序 腾讯地图大头针定位,获取当前地址,地图移动选点,定位当前位置
- 三轴机械臂图纸支持3D打印支持stm32源码3D图纸运动解算说明
- Centos 7.4 防火墙关闭命令
- 一文看尽微信AI团队打造扫一扫植物识别利器
- JAVA——多线程【线程终止、中断、插队】
- 图像处理特征不变算子系列之Moravec算子(一)
- 一次性删除页面中所有console.log()
- “善”用区块链:善是初心,链是保障
- 华为p10手机安装linux,鸿蒙OS手机适配进度曝光!麒麟970悬了
- L1-054~L1-056
热门文章
- python网格搜索核函数_(转载)Python机器学习笔记GridSearchCV(网格搜索)
- osm数据下载 python_GIS Experience (十):OSM数据获取
- ajax异步加载和cmd,异步传输Ajax(JQ)
- win7系统登录其他服务器端口,win7系统添加打印服务器端口的操作方法
- barrons ap计算机科学,巴朗ap心理学barrons ap psychology, 5th edition-201-240.pdf
- Java 将中缀表达式转换成后缀表达式
- eda技术试卷_《EDA技术》试题及答案
- access求斐波拉契数列_打印目录,斐波那契数列的递归与循环,牧场牛数
- ado execute open区别_二极管IN4148和IN4007的应用区别
- d3.js 旋转图形_MATLAB 的图形处理