高性能MySQL(3th)(第六章 sql优化) —— 01 减少冗余数据

一 查询冗余的条数

如实际前台只需要TOP10,但是查询时使用 LIMIT 100。

解决方案:使用需要的大小限制。e.g. LIMIT 10,或者至多 LIMIT 20。

二 查询冗余的的列

避免使用 “  select * “ 这种不加选择的select语句,或者“  select  col1,col2 “而实际上只使用col1的情况。这会带来多余的I/O,数据传输,内存,CPU的消耗。

解决方案:只select 需要的列,即最精简的sql。

三 重复查询相同的数据

这里的“重复查询相同的数据”不仅仅是sql语句相同,并且涉及的表基本是“稳定不变”的,即每次查询的结果也基本是相同的。换言之,对于这种基本稳定但是又不是永恒不变的数据,根本用不着每次都去请求(当然,也绝对不能写死)。

例如:

一个BBS系统,用户的头像URL基本是稳定的,而用户评论的地方通常需要显示该用户的头像,如果一个用户多次评论,
则每次显示都要回数据库查询头像的URL,进而拿到头像图片进行显示。这样重复查询非常浪费且不必要,这个问题一般怎么解决呢?

在初次查询时做一个缓存,以后的每次查询都先查缓存即可,如果用户改了头像,则在改头像操作返回成功之前,更新该用户头像URL缓存,或者令其原来的头像URL失效,每次缓存查找不到则从数据库中查找,并回填缓存。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值