全球旧事资料 分类
下);仅用复合聚集索引的非起始列作为查询条件的话,这个索引是不起任何作用的。复合聚集索引的所有列都用上,而且因为查询条件严格,查询结果少的话,会形成“索引覆盖”,性能可以达到最优。最重要的一点:无论是否经常使用复合聚合索引的其他列,其起始列一定要是
f使用最频繁的列。
4根据实践得出的一些其他经验,特定情况下有效用聚合索引比用不是聚合索引的主键速度快;用聚合索引比用一般的主键作orderby速度快,特别是在小数据量情况;使用聚合索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例减少,而无论聚合索引使用了多少个;日期列不会因为有分秒的输入而减慢查询速度;由于改变一个表的内容,将会引起索引的变化。频繁的i
sertupdatedelete语句将导致系统花费较大的代价进行索引更新,引起整体性能的下降。一般来讲,在对查询性能的要求高于对数据维护性能要求时,应该尽量使用索引,否则,就要慎重考虑一下付出的代价。在某些极端情况下,可先删除索引,再对数据库表更新大量数据,最后再重建索引,新建立的索引总是比较好用。
二、编写优化的SQL语句,充分利用索引下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。SQL语句在提交给数据库进行操作前,都会经过查询分析阶段,SQLSERVER内置的查询优化器会分析查询条件的的每个部分,并判断这些条件是否符合扫描参数(SARG)的标准。只有当一个查询条件符合SARG的标准,才可以通过预先设置的索引,提升查询性能。SARG的定义:用于限制搜索操作的一种规范,通常是指一个特定的匹配,一个确定范围内的匹配或者两个以上条件的AND连接。一般形式如下:列名操作符常数或变量或常数或变量操作符列名列名可以出现在操作符的一边,而常数或变量出现在操作符的另一边。如:Name’张三’价格5000
f5000价格Name’张三’a
d价格5000如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是说SQLSERVER必须对每一行都判断它是否满足WHERE子句中的所有条件,既进行全表扫描。所以,一个索引对于不满足SARG形式的表达式来说是无用的如:当查询条件为“价格25000”时,就无法利用建立在价格字段上的索引。SQLSERVER内置了查询优化器,能将一些条件自动转换r
好听全球资料 返回顶部