我是数据库方面的新手。而且我的数据库知识很老(大约 MSSQL2000)。我只记得,存储过程比普通查询更快,因为它避免了查询编译和优化。
我知道 PG 有两种类型的查询缓存选项。准备语句(临时缓存查询)和函数(持久缓存查询,在 MSSQL 中是存储过程)。
不管怎样,今天我听到了优化围栏的概念。哪个是优化器将函数视为不透明的黑盒,因此无法优化内部。从概念上讲,它可能是正确的。
即使函数完全只用 PL/pgSQL 编写,这是否正确?或者只是对非 SQL 语言的限制?我有机会通过使用 PL/pgSQL 获得更好的性能吗?