SQL语句优化的操作:
1.模糊匹配尽量少用 like'%param%' 前面用到了“%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加%.
2.可对字段相应的加索引,适当的索引会加快执行效率,索引也会占用内存
避免对索引字段进行计算操作.
避免在索引字段上使用not,<>,!=.
避免在索引列上使用IS NULL和IS NOT NULL.
避免在索引列上出现数据类型转换.
避免在索引字段上使用函数.
避免建立索引的列中使用空值.
3.能用UNION ALL 代替UNION 的话尽量代替(UNION 会自动去除重复行,并且会自动排序,而UINON ALL只是简的将结果集组合在一起).
4.对于 WHERE 子句的法则
尽量避免在 WHERE 子句后面使用 IN, NOT IN, OR, HAVING.
5.慎重使用临时表.
6.嵌套子查询尽量少用,一般不要超过三层,过多的嵌套子查询人都会看晕,何况电脑呢.
7.只在必要的情况下才使用begin tran
SQL Server中一句SQL语句默认就是一个事务,在该语句执行完成后也是默认commit的。其实,这就是begin tran的一个最小化的形式,好比在每句语句开头隐含了一个begin tran,结束时隐含了一个commit。
有些情况下,我们需要显式声明begin tran,比如做“插、删、改”操作需要同时修改几个表,要求要么几个表都修改成功,要么都不成功。begin tran 可以起到这样的作用,它可以把若干SQL语句套在一起执行,最后再一起commit。好处是保证了数据的一致性,但任何事情都不是完美无缺的。Begin tran付出的代价是在提交之前,所有SQL语句锁住的资源都不能释放,直到commit掉。
可见,如果Begin tran套住的SQL语句太多,那数据库的性能就糟糕了。在该大事务提交之前,必然会阻塞别的语句,造成block很多。
Begin tran使用的原则是,在保证数据一致性的前提下,begin tran 套住的SQL语句越少越好!有些情况下可以采用触发器同步数据,不一定要用begin tran.
浙公网安备 33010602011771号