数据库的优化(上)

(1)按需求索取字段,少用select *

用具体字段代替 * ,不要返回用不到的任何字段 count(*)会引起全盘扫描,并且没有任何业务意义,用count(1)代替(*)

(2)规范大小写 from和From,统一大小写

(3)不要把SQL语句写的太复杂
越简单的SQL语句被重用的可能性越高

(4)对查询进行优化,尽量避免全表扫描,首先应该考虑where及order by涉及的列上建立索引

(5)应尽量避免在where子句中使用null值!或者<、>操作符进行判断,否则放弃使用索引而进行全盘扫描。
如:select id from t where num is null
最好不要给数据库留null,尽可能的使用not null填充数据库(除备注、描述、评论之外)

(6)尽量避免在where子句中使用or来连接条件,如果一个字段有索引,一个字段没有索引,将导致放弃使用索引而进行全表扫描。

·like'*%'会用到索引,但是like'%*'就用不到索引。(%写前面,索引失效)

·不适当的查询参数有:not、!=、<>、!>、!<、not、exists、not like等,还有一些不恰当的用法, 例如:对数据库进行计算、等号左边使用函数、使用or,上述语法都用不上索引,降低程序的效率。

(7)不要在where子句中的"="左边进行函数、算数运算或其他表达式运算,否则系统可能无法正确使用索引

1:采用函数处理的字段不能利用索引,如:

select id from t where substring(name,1,3)='abc'

应改为

select id from t where name like ''abc%

2:进行了显或隐式的运算的字段不能进行索引,如

num+20>50

应改为

num>30(优化前每个都进行运算,从而索引失效全表扫描)

如select * from users where year(detecreated)<2007

应改为

select * from users where detecreated <'2007-01-01'

这样会使用针对detecreated的索引,提高效率。

(8)where后面条件顺序影响

where 女生 and 成绩 与 where 成绩 and 女生,第一种更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值