免责声明:出于好奇,这不是为了优化。
我想知道是否:
SET search_path TO myscheme; -- obviously this is done once per connection
SELECT foo, bar FROM table1 WHERE [..clauses..]
比某种方式更快/更慢
SELECT foo, bar FROM myscheme.table1 WHERE [..clauses..]
或者是否存在其他一些可能暗示在每个查询中指定架构的含义。
我做了一些(很少)测试,我看不出速度方面的差异。
答案 0 :(得分:2)
第二个更快,但几乎没有。 SET
非常便宜
通常,模式限定的表名可能稍微快一些,因为对系统目录的查询可能更具体。但是你无法衡量它。这是无关紧要的,性能方面的。
设置search_path
确实会对安全性和便利性产生影响。这通常是一个好主意
例如,请考虑"Writing SECURITY DEFINER
Functions Safely"手册中的建议。
答案 1 :(得分:0)
出于所有实际目的,这应该产生任何可衡量的差异。
IF 我猜,系统有一个可衡量的差异
search_path
,包含很多架构条目(几百个)和/或在这种情况下,除了限定模式名称之外,您还有肯定其他问题。