更新时间:

#一次使用 Redis 优化查询性能的实践

应用背景

有一个应用需要上传一组ID到服务器来查询这些ID所对应的数据,数据库中存储的数据量是7千万,每次上传的ID数量一般都是几百至上千数量级别。

以前的解决方案

  1. 数据存储在Oracle中,为ID建立了索引;
  2. 查询时,先将这些上传的ID数据存储到临时表中,然后用表关联的方法来查询。

这样做的优点是减少了查询次数(不用每个ID都查询一次),减少了解析SQL的时间(只需要执行1次查询SQL,但是多了插入数据的SQL处理时间)。

但是这样的设计仍然存在巨大的提升空间,当并发查询的数量增加时,数据库的响应就会很久。虽然建立了索引,但是每个ID查询的时间复杂度仍是O(logn)级别的,那么总的查询时间复杂度就应该是m*O(logn)。不知道Oracle对表关联查询有做了哪些优化,但应该也是改变不了时间复杂度的级别。

https://www.restran.net/2015/02/17/redis-practice/