数据库查询优化
先来看看这段SQL语句:
它是包含了 JOIN
, WHERE
和 LIMIT
三个关键字的基本查询语句。
执行策略
我将用伪代码来描述数据库查询优化的执行策略:
-
朴素查询
这一眼太老实了,虽然它是电脑不累,你也不能这么老实啊。比如单表有100万条数据,那么这就需要计算一万亿次的数量级,时间复杂是 O(n^2)。
-
增量查询策略
这个是我们在 CMU-15445 学到的优化策略,它是基于增量查询的。类似一种top-K问题,每次都是一条一条读取数据,直到满足条件就不再读取了。这样可以大大减少查询的时间。
但问题是,如果我们需要的数据在100万条的最后10条中,那其实复杂度是提升不大的。
-
索引优化策略
特性总结
- 增量查询:
只要收集到了足够的结果,就立刻返回,避免全量计算,减少工作量
- 索引加速:
在数据存储时做预先的排序,在查询时利用有序性快速定位到所需的行,最大发挥增量查询的优势