重庆中心浅谈数据库优化
Posted 黑马程序员重庆中心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重庆中心浅谈数据库优化相关的知识,希望对你有一定的参考价值。
数据库的优化
相信大家在面试的时候经常被问到关于数据库的优化问题,相信大家也很困扰,一般都是少用like,子查询之类的回答。
今天就简单告诉大家我自己总结的数据库优化相关的知识:
首先数据库优化主要分为硬优化和软优化:
硬优化主要是指针对数据库本身的优化(表和库)
软优化主要就是针对sql语句之类的优化
一、软优化(主要是sql语句优化):
1、查询条件尽量加索引
a)这个不是必须加的,但是在很大程度上能够解决一定查询效率的问题。但是需要注意的是不要在索引字段上做计算,用函数等操作。
2、少部分关键字的使用需要减少
a)避免在复杂的查询里面有like ‘%参数%’这样的形式,即少用到模糊查询,模糊查询完全可以在页面做成下拉框做选择。
b)NOT IN 这类也是非常浪费性能的,但是有的时候不可避免的会用到,只能建议少用,如果一定要用到可以用exit not exit代替
c) * 这个禁止使用,虽然有的时候开发是很方便,但是效率极低,建议使用字段名来代替
d)其他的情况,例如id>2 和id>=3,在整数的情况下,这两个查询结果是一样的,但是效率肯定后者就大于前者了。 >2需要去查询=2的情况,而>=3就不需要
3、 减少子查询的使用
a) 只有在业务复杂的时候我们会采用子查询,但是在复杂的业务都可以简单化,所以子查询我们完全可以拆分出来,先生成临时表,在做关联查询,这样就相对简单了
4、其他
a) 减少对数据库的重复操作,能合并就合并。能一条sql语句解决就不要分多条
b) 告诫大家一句,不要删除测试小姐姐的数据,不然就只能一辈子单身了
c) 还有很多没写到的,希望大家自己慢慢总结。Sql语句的优化不是固定的,只要在特定的业务下能提高效率那么就是ok的。
以上只是简单的列举了一部分。
二、硬优化:
1、 拆表
a) 在很多的情况下,某一张表某些个字段经常性的被查询到,那么我们就有必要来拆分一下表了
正如上面这张图片,在id,name,attr7,attr8,attr9常用的情况下,我们完全可以把这个表拆分成两张表通过id关联起来
2、分表
a) 单表数据太多,查询的效率极慢的情况下我们可以把表里的数据分成几张表来存储
就如上图,我们每次查询一月份的数据的时候都要在全年度的表里去查询,数据量太大,查询会很慢。
所以我们将每个月份的数据单独提出来做成表,这样查询就相对比较快了
3、读写分离
a) 读写分离,主要针对数据库访问的量很大,导致数据库运行可能宕机的问题。原理是添加几个数据库,形成集群将访问量平均分配到每个数据库上
如上图,我们只需要修改主库数据,通知到每个分库,从库更新之后。每次查询我们都将查询分配到每个从库就ok了。
4、数据库的优化还有针对引擎的优化,但是臣妾做不到啊。
最后,今天只是讲解了关于数据库优化的理论知识,后面有时间呢,会慢慢的更新如何搭建数据库集群,敬请关注。
以上是关于重庆中心浅谈数据库优化的主要内容,如果未能解决你的问题,请参考以下文章