TiDB优化器未对关联条件中“or”进行改写

找了资料看到了。
Oracle数据库从版本8i开始就引入了更高级的查询优化技术,其中包括对Disjunctive Normal Form (DNF)的支持。
许多现代关系型数据库管理系统(RDBMS)都实现了Disjunctive Normal Form (DNF)优化,以提高查询性能。以下是一些实现了DNF优化的数据库系统:

  1. PostgreSQL - PostgreSQL的查询优化器能够识别并优化包含OR条件的查询,将其转换为更有效的执行计划。
  2. Oracle Database - Oracle的优化器也支持将复杂的OR条件转换为多个子查询,然后使用UNION ALL来合并结果。
  3. Microsoft SQL Server - SQL Server的查询优化器同样能够处理OR条件,通过将其转换为多个子查询来优化执行路径。
  4. MySQL - MySQL的InnoDB存储引擎在某些情况下也能优化OR条件,尤其是在有适用索引的情况下。
  5. IBM DB2 - DB2的查询优化器也支持DNF优化,能够有效地处理包含OR逻辑的复杂查询。
  6. Google BigQuery - BigQuery作为一款云原生的数据仓库,其优化器也能够处理和优化包含OR条件的查询。
  7. Amazon Redshift - Amazon Redshift的查询优化器能够识别并优化包含OR条件的查询,提高查询效率。

这些数据库系统通过内部优化器的智能分析,能够自动将包含OR条件的查询转换为更高效的形式,比如使用UNION ALL来代替,从而避免了不必要的重复计算和数据扫描,提高了查询速度和资源利用率。不过,具体优化策略和效果可能因数据库版本和配置的不同而有所差异。

1 个赞