SQL优化经验谈
1.使用索引查找
对数据最快进行查找的方法是使用索引,如果要取出其他的列,sql会使用BookMark,索引可以直接在表级应用where子句和连接条件。
例子:表regisrersys 索引列userid 数据量:2万
select * from registersys where userid='test01'
select * from registersys where studentname='test01'
在执行计划中,1为1.98% 2为98.02%,因为2引起了全表查询
2。SARG
SARG(Search Argument)搜索参数,即sql使用索引优化where条件,下面是一些基本原则
·and是SARG,但or不是
·否定的条件(<> 、!>、 !< 、not exists、not In 、not Like)是不可优化的。
·通配符开始的条件是不能使用索引
·使用了表达式的条件不能使用索引
·where条件中包含了函数,需要表扫描
·SQL Expert是个不错的SARG工具
3。关于索引
·在一对多的联系中多的一方的外键(如orderdetial中的orderid)建立聚集索引
·复合索引中列顺序很关键,把经常检索的列放置在第一个位置
·如果表中有聚集索引,那所有的非聚集索引都是包含了聚集索引列的复合索引
·不要对只包含少数几个索引值的列设置为索引列,因此bit类型的列不适合做索引列
·使用索引优化向导参考进行索引优化
对数据最快进行查找的方法是使用索引,如果要取出其他的列,sql会使用BookMark,索引可以直接在表级应用where子句和连接条件。
例子:表regisrersys 索引列userid 数据量:2万
select * from registersys where userid='test01'
select * from registersys where studentname='test01'
在执行计划中,1为1.98% 2为98.02%,因为2引起了全表查询
2。SARG
SARG(Search Argument)搜索参数,即sql使用索引优化where条件,下面是一些基本原则
·and是SARG,但or不是
·否定的条件(<> 、!>、 !< 、not exists、not In 、not Like)是不可优化的。
·通配符开始的条件是不能使用索引
·使用了表达式的条件不能使用索引
·where条件中包含了函数,需要表扫描
·SQL Expert是个不错的SARG工具
3。关于索引
·在一对多的联系中多的一方的外键(如orderdetial中的orderid)建立聚集索引
·复合索引中列顺序很关键,把经常检索的列放置在第一个位置
·如果表中有聚集索引,那所有的非聚集索引都是包含了聚集索引列的复合索引
·不要对只包含少数几个索引值的列设置为索引列,因此bit类型的列不适合做索引列
·使用索引优化向导参考进行索引优化