首先,我们知道数据库里如果有成千上万的数据,我们查询的时候会很慢,这时候我们考虑怎么去优化数据的查询。由于关系表达式的语义级别很高,使关系系统可以从关系表达式中分析查询语义,提供了执行查询优化的可能性。
查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较高的效率,而且在于系统可以比用户程序的“优化”做的好。
原因如下:
目前关系型数据库通过某种代价模型计算出各种查询执行策略的执行代价,然后选取代价最小的执行方案。在集中式数据库中,查询执行开销主要包括磁盘存取块数(I/O代价)、处理机时间(CPU代价)以及查询内存开销。
总代价=I/O代价+CPU代价+内存代价
由于I/O操作查询的代价比内存代价高几个数量级,所以一般计算查询代价时用查询处理读写的块数为衡量单位。
实例:
注明:选择是对行的查询,投影是对列的查询。