以下的其注文章主要向大家讲述的是SQL Server索引在实际操作中其他的注意事项,“水可载舟,引使用的意事亦可覆舟”,其注SQL Server数据库的引使用的意事索引也一样。索引有助于提高检索性能,其注但过多或不当的引使用的意事索引也会导致系统低效。
因为用户在表中每加进一个索引,其注数据库就要做更多的引使用的意事工作。过多的其注索引甚至会导致索引碎片。
所以说,引使用的意事我们要建立一个“适当”的其注索引体系,特别是引使用的意事对聚合SQL Server索引的创建,更应精益求精,以使您的数据库能得到高性能的发挥。
当然,在实践中,作为一个尽职的数据库管理员,您还要多测试一些方案,找出哪种方案效率最高、最为有效。
改善SQL语句
很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:
- select * from table1 where name=''zhangsan'' and tID > 10000和执行:
- select * from table1 where tID > 10000 and name=''zhangsan''
一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合SQL Server索引,那么后一句仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全表中查找看有几个name=''zhangsan''的,而后再根据限制条件条件tID>10000来提出查询结果。
事实上,这样的担心是不必要的。SQL SERVER中有一个“查询分析优化器”,它可以计算出where子句中的搜索条件并确定哪个索引能缩小表扫描的搜索空间,也就是说,它能实现自动优化。
虽然查询优化器可以根据where子句自动的进行查询优化,但大家仍然有必要了解一下“查询优化器”的工作原理,如非这样,有时查询优化器就会不按照您的本意进行快速查询。
在查询分析阶段,查询优化器查看查询的每个阶段并决定限制需要扫描的数据量是否有用。如果一个阶段可以被用作一个扫描参数(SARG),那么就称之为可优化的,并且可以利用SQL Server索引快速获得所需数据。
SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接。形式如下:
列名 操作符 <常数 或 变量>
或
<常数 或 变量> 操作符列名列名可以出现在操作符的一边,而常数或变量出现在操作符的另一边。如:
Name=’张三’
价格>5000
5000<价格
Name=’张三’ and 价格>5000如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是SQL SERVER必须对每一行都判断它是否满足WHERE子句中的所有条件。所以一个SQL Server索引对于不满足SARG形式的表达式来说是无用的。
【编辑推荐】
(责任编辑:时尚)
7600车位!我国最大清洁能源汽车运输船首航 搭载上汽等新车驶向欧洲
劲仔食品预告业绩不错 副总丰文姬2022年涨薪 如今还会继续吗?
借婚姻索取财物如何判断?业内人士详解最高法涉彩礼纠纷最新规定
借婚姻索取财物如何判断?业内人士详解最高法涉彩礼纠纷最新规定