百万数据下几种SQL性能测试

今天闲来学习了一下SQL性能优化方面的知识,有以下学习收获,欢迎大家指点。

测试环境:90W,单条记录约3KB,数据库:MSSQL2005

测试前清除缓存

DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS

 

一、翻页性能测试

1、Top
select top 10 * from message where  id not in (select top 20 id frommessage where classid=77 order by id desc ) and classid=77 order by id desc
2、Max/Top
select top 10 * from message where id <(select min(id) from messagewhere  id in(select top 20 id from message where classid=77 order by iddesc) ) and classid=77 order by id desc
3、row_number
select top 10 * from (select row_number()over(order by id desc) rownumber,*from message where classid=77)a where classid=77 and rownumber>20

MsSql翻页性能测试

ID列索引

Top

Max/Top

row_number()

无索引

cpu

reads

duration

0

893

65

cpu

reads

duration

0

590

70

cpu

reads

duration

0

512

67

聚焦索引

cpu

reads

duration

0

37

66

cpu

reads

duration

0

98

64

cpu

reads

duration

0

28

67

非聚焦索引

cpu

reads

duration

0

895

63

cpu

reads

duration

0

592

66

cpu

reads

duration

0

514

66

 

 

 

 

 

 

 

 

 

 

 

 

结论:

1)从以上测试结果可以看出,不论是否索引排序字段,也不管是何种索引,row_number都能得到最高的性能,其次Max/Top的方式测试性能也不错。

2)在使用非聚焦索引的情况下,性能并无任何提示,甚至要慢于无索引的情况,可能是因为SQL先要去查找索引表,然后根据索引结果再去查找实体表,在这过程浪费了资源。

3)聚焦索引也的正确应用才能发挥其该有的优势啊!

综合结果:row_number> max/top > top

 

二、in、or、union关键字性能测试

介于网上有很多关于in/or/union等关键字的性能讨论,本人也小试了一把,测试结果如下。

 1、in

 select * from video where id in(100,101,102,103,104,105,106,107,108,109)

2、union

select * from video where id =100

union all select * from video where  id =101

union all select * from video where  id =102

union all select * from video where  id =103

union all select * from video where  id =104

union all select * from video where  id =105

union all select * from video where  id =106

union all select * from video where  id =107

union all select * from video where  id =108

union all select * from video where  id =109

3、or

select * from video where id=100 or id=101 or id=102 or id=103or id=104 or id=105 or id=106 or id=107 or id=108 or id=109

 

in PK or PK union

 

ID列索引

in

union

or

无索引

cpu

reads

duration

0

37

54

cpu

reads

duration

0

58

104

cpu

reads

duration

0

41

56

聚焦索引

cpu

reads

duration

0

44

54

cpu

reads

duration

0

54

58

cpu

reads

duration

0

40

54

非聚焦索引

cpu

reads

duration

0

43

53

cpu

reads

duration

16

61

62

cpu

reads

duration

0

43

54

 

 

 

 

 

 

 

 

 

 

 

 

 

结论:

1)  网上很多资料说union的性能要高于in/or,但从我这测试的结果来看,不论是有无索引,union的性能都是最低的?不知是何原因?

2)  网上流传mssql会自己把in解析成or查询,从这份测试结果来看,貌似不假!

3)  虽然in/or会引起全表扫描,但别无选择的情况下也是是能胜任很多工作的。

转载于:https://www.cnblogs.com/haiyabtx/archive/2012/11/22/2783223.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

耗时n年,38页《数据仓库知识体系.pdf》(数据岗位必备)

文末下载PDF 文章很长&#xff0c;前言一定要看 拥有本篇文章&#xff0c;意味着你拥有一本完善的书籍&#xff0c;本篇文章整理了数据仓库领域&#xff0c;几乎所有的知识点&#xff0c;文章内容主要来源于以下几个方面&#xff1a; 源于「数据仓库交流群」资深数据仓库工程…

使用detours实现劫持

第一步&#xff1a;下载detours3.0&#xff0c;安装detours 第二步&#xff1a;构建库文件&#xff0c;nmake编译 第三步&#xff1a;包含库文件和头文件 #include “detours.h” //载入头文件 #pragma comment(lib,”detours.lib”) //表明要使用静态库 第四步&#xf…

Gartner2018新兴技术成熟度曲线:人机界线日益模糊!

来源&#xff1a;云头条摘要&#xff1a;Gartner公司的2018年新兴技术成熟度曲线上35项值得关注的代表性技术揭露了五种明显的新兴技术趋势&#xff0c;它们将模糊人与机器之间的界线。2018年新兴技术成熟度曲线是从2000多种技术筛选出来的。Gartner公司的2018年新兴技术成熟度…

1万字,阿珊学习笔记《前端基础知识》小白入门导读(建议收藏)

&#x1f345; 作者&#xff1a;阿珊 &#x1f345; 作者简介&#xff1a;95后前端小姐姐&#xff0c;蓝桥签约作者&#xff0c;欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff1a;知识体系、面试题库、技术互助、简历模板。文末公众号领取 &#x1f345; 包邮送书&…

emacs学习笔记

<?xml version"1.0" encoding"gb2312"?> emacs学习笔记emacs学习笔记 Table of Contents 1 我想象中的emacs 1.1 写博客 1.2 工作管理 2 一些插件 2.1 yas/snippet 的模板定制: 2.2 新浪微博 2.3 cnblogs博客 1 我想象中的emacs 1.1 写博客 写…

①万字《详解canvas api画图》小白前端入门教程(建议收藏)

&#x1f345; 作者&#xff1a;阿珊 &#x1f345; 作者简介&#xff1a;95后前端小姐姐&#xff0c;蓝桥签约作者&#xff0c;欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff1a;知识体系、面试题库、技术互助、简历模板。文末公众号领取 &#x1f345; 包邮送书&…

新科技快速指南系列之“量子计算”:历史、现在与未来

来源&#xff1a;36Kr摘要&#xff1a;当计算机变更小或者变更快时&#xff0c;就会发生下一个大事件&#xff08;Big Things&#xff09;。量子计算的出现&#xff0c;是为了追求技术史上最大的性能提升。当计算机变更小或者变更快时&#xff0c;就会发生下一个大事件&#xf…

使用C与C++混合编程封装UDP协议

引入头文件&#xff0c;导入lib文件 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <WinSock2.h>#pragma comment(lib,"Ws2_32.lib")2. 在头文件中声明&#xff0c;由于是C中调用C代码需要使用extern关键字extern …

C++实现大数据乘法

结构体定义与封装 struct bigdatacom { private :char dataa[100];char datab[100]; public :void init(const char *str1,const char *str2){std::cout<<typeid(*this).name()<<std::endl;strcpy(this->dataa,str1);strcpy(this->datab,str2);}char * getb…

数据倾斜?几招把你安排的板板正正的!

&#x1f345; 作者&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、HDZ核心组成员&#x1f4aa;、C站总榜前10名✌ &#x1f345; 粉丝专属福利&#xff1a;文末公号「信息技术智库」回复「资料」领取 &#x1f345; 如觉得文章不错&…

数据解读:资本追逐的14个人工智能细分领域

来源&#xff1a;亿欧摘要&#xff1a; 2014年后&#xff0c;人工智能逐渐成为中国私募市场的“宠儿”&#xff0c;投资风口也逐渐形成。亿欧智库最新推出的《2018中国人工智能投资市场研究报告》中&#xff0c;挖掘了14个行业中最受追捧的细分领域。2012年&#xff0c;深度学习…

zencart 如何修改在线人数和订单编号

zencart 如何修改在线人数和订单编号 1 订单编号的修改办法 进入后台-工具(tool)-店铺管理器(store manager)&#xff0c;里面有个重置当前订单号&#xff08;Reset Current Order ID). 首先你得测试购买一次&#xff08;不要告诉我你不会&#xff09;&#xff0c;就会产生当前…

Linux开发cocos2dx程序环境搭建

安装linux系统&#xff0c;ubuntu 14.04 64位安装支持软件 sudo apt-get update sudo apt-get install git ssh vim ctags qt-sdk build-essential libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev libglfw-dev libzip-dev libcurl4-gnutls-dev libfontconfi…

【举栗说明】JavaScript作用域,一次性给你总结!

&#x1f345; 作者&#xff1a;阿珊 &#x1f345; 作者简介&#xff1a;95后前端小姐姐&#xff0c;蓝桥签约作者&#xff0c;欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff1a;知识体系、面试题库、技术互助、简历模板。文末公众号领取 &#x1f345; 包邮送书&…

反思腾讯:大数据与AI时代的危与机

来源&#xff1a;华尔街见闻摘要&#xff1a;过去十数年&#xff0c;腾讯从一个桌面即时通讯工具进化成为一个庞大的数字帝国&#xff0c;是全球互联网公司失控性进化的先行者和光辉典范。过去十数年&#xff0c;腾讯从一个桌面即时通讯工具进化成为一个庞大的数字帝国&#xf…

poj 1015(dp)

看的解题报告。。http://blog.csdn.net/lyy289065406/article/details/6671105 View Code 1 #include <iostream>2 #include <cstdio>3 #include <cstring>4 #include <algorithm>5 6 using namespace std;7 8 int dp[22][805];9 int path[22][805]; …

cocos2dx实现经典飞机大战

游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING_NS_CC;class LayerGameStart :public CCLayer { public:static CCScene * scene();CREATE_FUNC(LayerGameStart);bool init();void addStartGamePicture();void …

【包邮送书活动】20211018期-开奖通知

奖品&#xff1a;包邮实体书 参与方式&#xff1a;CSDN点赞评论收藏文章即可参与、或公众号 开奖通知方式&#xff08;老是有人中奖联系不上&#xff0c;我很郁闷&#xff09;&#xff1a;朋友圈、blink、私信、发文 抽奖程序说明&#xff1a;https://notomato.blog.csdn.ne…

Custom PuTTY Color Themes

两个 putty 配色方案&#xff0c;感觉还不错&#xff0c;至少注释的代码可以轻松看清楚了。 igvita-light.reg - Light-er default themeigvita-desert.reg - Desert theme源址&#xff1a; http://www.igvita.com/2008/04/14/custom-putty-color-themes/ 转载于:https://www.c…

Cocos2dx实现象棋之布局

开始界面 #ifndef SCENESTART_H #define SCENESTART_H #include "cocos2d.h" #include "SceneGame.h" USING_NS_CC;class SceneStart : public CCLayer { public://SceneStart();static CCScene * scene();CREATE_FUNC(SceneStart)bool init();bool ccTou…