sql的优化的几种方案

(1)创建索引
创建表就要创建索引,选定那个字段要创建索引,不要所有字段都创建索引.经常查询或经常当where条件的,创建索引。
使用索引好处,查询快,不好的地方是进行insert、update、delete的时候慢,因为索引占磁盘空间.
最好的方式是实现读写分离,读的时候有索引,写表里没有索引。
 
索引什么时候失效?
索引失效实在使用like语句查询时失效
组合什么时候失效?比如id和name字段是一个组合索引。
1、顺序颠倒时候失效,如where name=value and id = value这是顺序颠倒
2、使用like语句时候失效
3、如果查询时使用id查询索引不失效,使用name查询会失效
 
(2)sql本身优化
不用*,少用函数和like,不用嵌套语句等
 
(3)大表拆小表
①纵向拆分
大表拆小表,比如文章表字段有id/autor/title/content,content是一个大字段,可以单独拆到一张表里.而且content用的时候比较少,所以拆到另外一张表里可以增快查询速度。
 
用户表的id/name/nick_name/age/phone是常用信息在一张表,爱好/描述/地址是不常用信息,拆到另外一张表里
 
②横向拆分
把数据分表拆开,靠代码控制关联。
如果id是int,可以id的数值拆分。
根据日期拆分也可以。
 
我只要玩具的商品,刚开始只展示20条。
横向拆分很少使用。因为有分页和条件、索引等优化,所以几乎很少有人用横向拆分。
 
(4)加冗余字段
不能所有的字段都加成冗余字段,一定是不常变化的字段为冗余字段
优化前:
汽车表:
id,name,汽车的尺寸,汽车颜色,汽车的生产厂家表的id字段
生产厂家表
id,name,地址信息。
 
我需要展示骑车的信息列表,列表展示信息中需要包含生产厂家时,如果left join,效率会低
如果在单表中查询,速度快,
 
我现在对数据库进行添加冗余字段,对数据库数据优化,
 
优化后:
汽车表:
id,name,汽车的尺寸,汽车颜色,汽车的生产厂家表的id字段,厂家的名字
生产厂家表
id,name,地址信息。
 
什么时候可以加冗余字段?什么情况下不可以加呢?
如果这个冗余字段的数据经常改变,就不建议加冗余字段了
 
(5)不创建外键,靠代码和sql控制
安全性要求不是很高,并且数据量很大的时候,可以不需要外键。
银行项目,安全性要求很高的项目是用外键的。
用外键会降低插入数据的速度,不用外键靠sql和代码控制完全不影响使用。
 

 


 

 


 

 



 


 





 

 

 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值