深入浅出的 SQL Server 查询优化
目前网络数据库的应用已经成为最为广泛的应用之一了,并且关于数据库的安全性,性能都是企业最为关心的事情。数据库渐渐成为企业的命脉,优化查询就解决了每个关于数据库应用的性能问题,在这里microsoft sql server又为我们做了些什么,我们一起关注。
优化查询我们理解起来貌似很抽象,概括范围十分的大,关于数据库这里的优化查询其实很简单,做一个简单的例子。一个数据包经过无数的路由器达到自己的目的地址,如果在经过每个路由器的时候,路由器都会给他指向最近的路,那么他抵达的速度也就是最快的。在数据库中也是一样,查询优化就是建立一个一个的路标,就是给这本厚厚的书,写一份简单快捷好用的目录,让计算机能够快速的读取到我们查询的数据。从这里可以联想到,优化查询就是建立目录,我们这里称之为索引。
通常用图书馆比作数据库,图书目录相当于我们的索引。
给图书分类,同类的书放在同一个书架中。
给图书编号,编号是关于书在书架的位置,书架的位置来决定的。
将编号进行统计。
这样,我们对图书馆就建立了索引,索引的建立,对数据库的查询效率的提高并不只是2.3倍,有时候会提高的惊人。
了解到了索引,那么我们自然而然的会想到关于索引的种种设计方案,不同的查询索引会对不同的查询语句进行优化查询。那么单单通过鼠标点击能做到我们希望得到的索引么?microsoft sql server 已经解决了这种问题。我们通过实际操作来看看如何实现的。这种简易的操作再一次夸张到了什么地步!
在sql server中打开需要建立索引的表,右键索引项目,我们可以看到上图所显示的窗口在这里,如果说我们的应用就如同图书馆一样简单快捷,那么我们可以通过这里点点鼠标就完成了操作,如果我们是比较复杂的查询方式呢?或者说有没有比这个提升效率空间更大的方法呢?这才是我要说的。
往往我们需要的并不是那么整齐的索引模型,例如我们做网站的应用,数据库是以什么样的方式调用的数据,根据这样的方式,我们建立相应的索引,我们的需求才会达到。联想一下这样的操作应该很繁琐,要求对SQL查询的了解也颇深,而这里微软的sql server已经为我们准备好了相应的策略,我们以一个简单的案例做一说明。
首先键入我们需要查询的语句,并查看他的运算符开销,当然开销越小,说明我们提高的越大。
我们查询关于这个电话号码的所有信息,运算符开销为0.134137,这里就不截图了,将鼠标放在索引查找就可以看到。选中我们的查询语句,点击分析查询。
点击左上角的开始分析即可得到相应的分析结果。
复制到剪切板之后,我们创建新的查询,将这些语句复制进去,然后执行。就会自动生成新的索引,而这个索引所提高的效率远远超过我们手动创建的简单索引。
我们在来看,查询速率已经提升了40多倍,很夸张的一个数字。这样创建的索引,会对所有的类似查询都会生效,大大提高了数据库查询效率,实现了优化查询。
深入浅出的 SQL Server 查询优化的更多相关文章
- SQL Server 查询优化 索引的结构与分类
一.索引的结构 关系型数据库中以二维表来表达关系模型,表中的数据以页的形式存储在磁盘上,在SQL SERVER中,数据页是磁盘上8k的连续空间,那么,一个表的所有数据页在磁盘上是如何组织的呢?分两种情 ...
- 深入浅出 关于SQL Server中的死锁问题
深入浅出 关于SQL Server中的死锁问题 博客2013-02-12 13:44 分享到:我要吐槽 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的.理解死锁首先需要对死锁所涉及的相 ...
- SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种) .
今天看到一位博友的文章,觉得不错,转载一下,希望对大家有帮助,更多文章,请访问:http://blog.haoitsoft.com 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺 ...
- SQL Server查询优化器的工作原理
SQL Server的查询优化器是一个基于成本的优化器.它为一个给定的查询分析出很多的候选的查询计划,并且估算每个候选计划的成本,从而选择一个成本最低的计划进行执行.实际上,因为查询优化器不可能对每一 ...
- SQL Server查询优化中的两个选项
本文中,我们将介绍两个SQL Server中的可用概念,它们是使用SQL Server时值得注意的技术. 1. OPTIMIZE FOR Unknown SQL Server 2005版 ...
- MS SQL Server查询优化方法 查询速度慢的原因很多,常见如下几种
1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大 ...
- SQL Server 查询优化器运行方式
一.结合实际,谈索引使用的误区 理论的目的是应用.虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析.下面我们将根据在实践中遇到的实际问题 ...
- SQL Server查询优化
从上至下优化 看过一篇文章,印象深刻,里面将数据库查询优化分为四个大的方向 使用钞能力--给DB服务器加物理配置,内存啊,CPU啊,硬盘啊,全上顶配 替换存储系统--根据实际的业务情况选择不同的存储数 ...
- SQL Server查询优化指南
1.尽量不要使用is null,否则将导致引擎放弃使用索引而进行全表扫描.2.char是固定长度,速度快,但占空间,varchar不固定长度,不占空间,但速度慢.3.能使用数字类型就不要使用字符,查询 ...
随机推荐
- Oracle操作管理之用户和角色
1.用户管理 (1)建立用户(数据库验证) CREATE USER smith IDENTIFIED BY smith_pwd DEFAULTTABLESPACE users TEMPORARY TA ...
- dota监測
执行环境:win7 32位. python版本号:3.4.1 因为用到了一些win32api,这些并不是python标准库自带的,所以你须要先去下载pywin32模块.去http://sourcefo ...
- C++ new malloc realloc
int* a = new int; 分配了存储空间,但没有赋初值 int* a = new int(10) 分配了存储空间,并赋初值,即*a = 10 int* a = ne ...
- sqlite 数据库 相关知识
一基本简单介绍 SQLite 是一个自持的(self-contained).无server的.零配置的.事务型的关系型数据库引擎.由于他非常小,所以也能够作为嵌入式数据库内建在你的应用程序中. SQL ...
- React Native 中的component 的生命周期
React Native中的component跟Android中的activity,fragment等一样,存在生命周期,下面先给出component的生命周期图 getDefaultProps ob ...
- LeetCode 970. Powerful Integers (强整数)
题目标签:HashMap 题目让我们找出所有独一的powerful integers 小于bound的情况下. 把 x^i 看作 a:把 y^j 看作b, 代入for loop,把所有的情况都遍历一遍 ...
- oc82--成员变量使用copy修饰
// // Person.h #import <Foundation/Foundation.h> typedef void (^myBlock)(); @interface Person ...
- Ubuntu 查看当前目录使用的总空间大小
查看当前目录使用的总空间大小 du -h --max-depth=0 #du -h --max-depth=0 217M . 查看当前目录使用总空间的大小以及当前目录下一级文件及文件夹各自使用的总空间 ...
- 客户端JavaScript Ajax
创建: 2017/10/21 完成: 2017/10/23 [TODO] 对Ajax收发各类型数据制作模板 补充跨域通信(cross origin) p457 HTTP通信 HTTP 超文本 ...
- yum 安装redis
1.yum install redis 2.yum install php-redis 3service redis start chkconfig redis on