改进SQL该如何写

我确实需要两个表里的数据链接在一起怎么办呢。

一种方案是:我们可以做个冗余,建表的时候,就把这些列放在一个表里,比如一开始有 student(id,name)class(id,description)student_class(student_id,class_id)三张表,这样是符合数据库范式的(第一范式,第二范式,第三范式,BC范式等),没有任何冗余,但是马上就不符合“编程规范“了,那我们可以用一张大表代替它, student_class_full(student_id,class_id,name,description),这样name和description可能要被存储多份,但是由于不需要join了,查询的性能就可以提高很多了。

除此之外,常见的还能思考到的解决方法比如有:

  • 可以尝试拆解复杂查询语录成为多条查询语句,将1拆解为n+1,其中每条简单的大表查询尽量走索引,提高查询效率。当然也要参考隔离级别是否会产生数据不一致的情况。

  • join顺序适当优化,尽量优化

  • 自建应用层缓存,但涉及到增删查改可能额外代价比较大。

当然多插一句,不同项目的业务不同,能定制化解决的方案也不尽相同,还是得根据实际情况来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值