什么是查询优化并解释其两种形式(DBMS)?
对于任何给定的查询,可能有多种不同的方式来执行它。选择合适的查询来处理查询的过程称为查询优化。
形式
查询优化的两种形式如下-
启发式优化-这里查询执行是基于启发式规则对单个操作进行重新排序的。
基于成本的优化-通过估计执行多个不同执行计划的成本,系统地降低了执行查询的总体成本。
示例
从customer中选择name,accountwherecustomer.name=account.nameandaccount.balance>2000;
有两个评估计划-
Πcustomer.name(σcustomer.name=account.name^account.balance>2000(customerXaccount)
Πcustomer.name(σcustomer.name=account.name(customerXσaccount.balance>2000(account)
成本评估者评估不同评估计划的成本,并选择成本最低的评估计划。磁盘访问时间、CPU时间、操作数、元组数、元组大小都被考虑用于成本计算。
启发式方法也称为基于规则的优化。转换关系代数查询的三种方法是-
在查询中首先执行SELECTION过程。这应该是任何SQL表的第一个操作。通过这样做,我们可以减少查询中所需的记录数,而不是在查询期间使用所有表。
在查询中尽快执行所有投影。有点像选择,但这种方法有助于减少查询中的列数。
执行最严格的连接和选择操作。这意味着只选择那些将导致记录数量相对较少并且在查询中非常必要的表和/或视图集。显然,当连接具有很少记录的表时,任何查询都会执行得更好。
因此,我们在这些方法中看到,我们的动机只是成本优化。