SQL*_*ous 4 sql language-design
我认为必须有一个特定的设计理由,为什么你不能编写如下的查询:
select
(select column_name
from information_schema
where column_name not like '%rate%'
and table_name = 'Fixed_Income')
from Fixed_Income
Run Code Online (Sandbox Code Playgroud)
而不得不求助于动态SQL.
谁知道那是什么原因?我试过谷歌搜索它,但所有的命中都是呼救,以解决问题 - 这意味着它是一个相当广泛的需求,并没有很好理解.
原因是查询优化器需要知道您在编译时引用的确切模式对象.它需要它们来优化查询.如果没有查询优化器可用的信息,您不会相信RDBMS会有多慢.
这有点像实践中静态与动态类型的性能差异:通常存在一些非平凡的差异(我在这里只考虑主流语言).编译器可以利用静态信息生成出色的代码.
即使存在此功能,也可以通过首先计算表名和列名然后执行标准的"静态"查询计划来实现.