浅谈数据库优化

目前先浅谈自我总结的数据库优化

1.物理主外键 中间表
对于架构师来说:
在实际开发过程中,设计表结构时,为了业务拓展和迭代开发,很少去建立物理主外键或中间表。比如A表 和B表,A表中放入B表B.id ,在写入数据时,A表中的外键(Bid)必须要插入B.id,不写不行,不能将其空着,且要求B中的id必须要有值。
在实际开发中不一定一上来就定完外键,为了方便后期开发者容易 ,一般使用逻辑主外键,就是通过人为来定这个字段存某个表的主键(并不真实存在的),不是真的在物理上定义外键

2.对于sql语句的优化
对于程序员来说:
(1)在早些时期,对sql语句的优化的要求比较多,比如 使用in 没有 inner join 效率高。
(2)还有在写查询语句时,禁止使用*去查询,因为只要用星号去查询就一定是全表扫描,效率很低。如果想要查询,要多少个字段就查多少个字段,不要怕麻烦,效率也比用星号高(特别是多表联查,写星号很忌讳)。
(3)避免全表扫描 比如 not in ,!= 只要是非的操作都是全表扫描
(4)如果到了必须要用in 不能用inner join的时候怎么办?这个时候采用exist关键字,exist效率比in。所有用 not in ,in 都可以用exist,not exist替代。

3.索引
但是索引是一把双刃剑,会提高查询效率,但会大幅度降低增删改效率。建立索引的底层原理就是建立一个二叉树(正确来说是b+树),如果要增删改会重新构建二叉树,会大大降低增删改效率。一般情况下 一个表索引顶多创建到两列上 主键一个索引(主键本来就是索引),另一个视业务而定

其余还有很多 先暂且谈到这里

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值