数据库优化笔记整理

最近有一家公司问了一些关于数据库优化的问题,回答的时候不是很说得出来,平常数据库方面的东西只是用基本的建表、增删改查等,会考虑到代码中的优化,但是很少会考虑数据库层面的优化,所以就专门查了一下,顺便记下笔记。


参考链接1:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html


1.字段类型选择:能使用数字类型时,尽量不使用字符类型,因为数字查询更快,消耗的存储资源更少;

字段字数波动不大的情况,使用char而不是varchar,因为char消耗固定的存储空间,但是查询快,varchar相对更省空间;


2.查询时:尽量少使用*通配符,如不需要表中所有字段信息,尽量列出所有需要的列名来查询;

如果判断条件有索引,将索引放在第一个查询条件,特别是聚集索引,可以极大程度的提高查询效率。


3.导致索引无效的情况:

where中使用null、<>、!=、or、in、not in等情况均会导致索引失效从而变成全表扫描。

另外,where子句中对字段进行表达式操作(如:where money/2=100)或函数操作。


4.使用exist、not exist来代替in和not in可以提高查询效率。


5.建临时表时,如果数据量大,可以考虑使用select into代替普通的create table+insert,可以提高速度,但是select into会导致表锁定,所以需视情况选择方案。


6.其他提高查询效率的方案:多表联查,可关联的字段尽量都使用上; 能用distinct就别用过group by;


7.索引:聚合索引(簇索引),一张表只能有一个,表的存储顺序就是索引的顺序,能极高效的提高查询效率。

非聚集索引(非簇索引),可多个,表的存储顺序跟索引顺序无关。

虽然大多数情况下会将唯一约束索引和主键放在一起,但并不能最大化的利用聚集索引的优点,聚集索引应考虑建在最常使用的查询条件的字段上面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值