SQL优化

#数据库的优化
      
####      相信大家在面试的时候经常被问到关于数据库的优化问题,相信大家也很困扰,一般都是少用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,         数据库的优化还有针对引擎的优化,但是我先回家了,以后再写哈。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值