文章目录
什么是数据库查询优化?
计算机科学家们,一直在追求着一些较为通用的目的,比如:
1.通过计算机去解决更多的问题
2.通过计算机去更快的解决问题
而数据库查询优化的目的,更多服务于后面的这个目的,更快的进行查询,快速响应查询结果。
影响查询优化的因素
而在数据库查询中,哪些因素影响着查询的效率呢?
1.计算的数据量。数据量越大,一般计算的次数越多,计算的时间也越长。
2.IO。这也和第一条有关,往往数据量越大,需要的存储空间越大(这里认为数据库中的数据是存在硬盘中的),所以IO的开销越大。
为了进一步深入理解这个问题,我们引入一个简单的例子:
- 该例子从关系代数角度进行讲解。
- S t u d e n t ∗ S C ∗ C o u r s e Student * SC * Course Student∗SC∗Course最先进行计算,然后后续的计算都建立在此计算结果之上。即,随后的选择操作将会建立在巨大的数据量之上,这计算是非常耗时的。
【一个经验】大数据量如果经过计算步骤越多,那么越耗时。所以,如果能够在等价情况下,在计算早期将数据量降下来,那么将大大提升查询速度。
下面给出了,针对上面的情况的一些等价的关系代数式,这些关系代数将数据量在早期将量降了下来,从而使得:
- 在笛卡尔积之前将数据量降了下来,从而使得笛卡尔积后,数据量不会太大。
- 之前的巨大数据量,不会出现在任何一个步骤,大大节省了计算时间。
优化策略概述
查询优化的总体思路
语义优化 – 内容等价性
本文章中暂且不深入探讨此方面的内容。
语法优化(逻辑层优化)—语法等价性