IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:查询

共 2 篇相关文章

IT 累计浏览 3,297

sku组合查询算法探索

这篇讲的是电商或库存管理中一个常见但棘手的问题:如何高效查询满足多个属性条件的SKU组合。当商品属性(如颜色、尺码、版本)增多时,传统数据库的`IN`或`JOIN`查询会面临组合爆炸,性能急剧下降。 作者从这一背景问题出发,探索并设计了一种名为“位向量+分层索引”的查询算法。核心思路是为每个属性值分配一个独立的位(bit),并将一个SKU的多属性组合编码为一个整数(位向量)。查询时,通过位运算(AND)能极快地判断一个SKU是否满足所有条件,从而将复杂的条件匹配转化为高效的位操作。 文章详细对比了遍历、传统数据库查询以及位向量算法的性能差异。在线上实际数据测试中,位向量算法在查询速度上实现了近400倍的提升,同时内存占用也大幅降低。这种方法的本质是将“查询”问题转化为“计算”问题,为处理海量SKU组合查询提供了新思路,尤其适用于对实时性要求高的场景。

IT 累计浏览 6,080

一次神奇的MySQL优化

这篇讲的是一个关于MySQL索引优化的真实案例。作者从一个看似简单的用户分组表出发,表中存储了用户ID与群组ID的关联关系,并已为这两个字段建立了索引。然而,随着数据量增长到七十多万行,一个本应很快的查询却出现了性能问题。 问题的根源在于查询优化器对索引的选择。作者发现,在执行特定查询时,MySQL并没有选择预想中效率更高的`group_id`索引,而是使用了`uid`索引,导致了大量的回表操作,拖慢了速度。这背后涉及到的是索引区分度与查询条件中值的分布问题——优化器会基于统计信息做出判断,有时这种判断并非最优。 解决方法颇具启发性:作者通过调整SQL查询的写法,巧妙地引导优化器选择了正确的索引,最终让查询执行时间大幅缩短。这个案例展示了MySQL优化器行为的微妙之处,也提醒我们,建立索引只是第一步,理解查询如何使用索引同样关键。