数据库优化--操作优化

数据库优化包含以下三部分,数据库自身优化,数据库表优化,程序操作优化。此文为程序的操作优化

详情请看下图




操作符优化


1 IN, Not IN操作符

INExists性能有外表和内标区分,但是在大数据量的表中推荐使用exists代替

Not In是不会做索引的,可以用Not Exsits代替

 

2 Is Null Is not NULL操作

 索引是不索引空值的,所以这样的操作不能使用索引,可以用其他的办法处理,例如:数字类型,判断大于0,字符串类型设置一个默认值,判断是否等于默认值即可


3不等于操作符

不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。 用其它相同功能的操作运算代替,如 a<>0 改为 a>0 or a<0    a<>’’ 改为 a>’’

 

4用全文索引索引文本数据,取代like搜索

(1)全文搜索让你可以实现like不能完成的复杂搜索,如搜索一个单词或一个短语,搜索一个与另一个单词或短语相近的单词或短语,或者是搜索同义词;

(2)实现全文搜索比实现like搜索更容易(特别是复杂的搜索);

(3)要明白,通配符的使用时会降低查询的速度,主要是使用通配符系统会不使用索引进行查询的

 

SQL语句的优化


1,在从初学中不使用select*

为什么不能使用,地球人都知道,但是很多人都习惯这样用,要明白能省就省,而且这样查询数据库不能利用“覆盖索引”了

 

2尽量写 Where子句

尽量不要写没有whereSQL语句


3避免使用临时表

(1)除非却有需要,否则应尽量避免使用临时表,相反,可以使用表变量代替;

(2)大多数时候(99%),表变量驻扎在内存中,因此速度比临时表更快,临时表驻扎在TempDb数据库中,因此临时表上的操作需要跨数据库通信,速度自然慢。

减少数据库的访问次数

程序设计中最好是将一些常用的变量放在内存中或放在其他方式减少数据库的访问次数

 

5减少重复的工作

这些主要是在客户端的程序中,注意:

A减少不必要的数据转换,减少数据转可以较少内存的开销,

B合并对同一表,同一条件多次的更新(UPdate),

 

 where使用的原则


1     where子句中应该把最具有限制性的条件放在最前面 

select * from table1 where field1<=10000 and field1>=0;
select * from table1 where field1>=0 and field1<=10000;

如果数据表中的数据field1>=0,则第一条select语句要比第二条select语句效率高的多,因为第二条select语句的第一个条件耗费了大量的系统资源。                                                                                                                                                                                                                                                                                                      

2 where子句中字段的顺序和所以中字段顺序应该一致

select * from tab where a=… and b=… and c=;

若有索引index(a,b,c),则where子句中字段的顺序应和索引中字段顺序一致。


3使用函数

select field3,field4 from tb where upper(field2)='RMN'不使用索引。

如果一个表有两万条记录,建议不使用函数;如果一个表有五万条以上记录,严格禁止使用函数!两万条记录以下没有限制。

 

小结

程序的操作优化,包括一些操作符号的使用, sql语句的精简where使用的原则。

经验是经过不断的实践总结的,我们要善于总结他人的经验从中提炼,避免出现同样的额问题。本文其中也是有借鉴于其他的网络文章的,不足之处还请指正

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值