Postgres 和 PHP 的动态 SQL 查询

Dynamic SQL queries for Postgres and PHP

这样写有什么区别:

SET SCHEMA 'schema';
        SELECT  table2.field1,
                table2.field2,
                table2.field3,
                table2.field4,
                table2.field5,
                table2.field6
            FROM table2
            WHERE table2.field1 LIKE '%{$search}%' and table2.field2 LIKE '%{$search2}%' and table2.field3 LIKE '%{$search3}%' and table2.field4 LIKE '%{$search4}%' and (table2.field5 ~* '{$search5}' {$radioa} table2.field6 ~* '{$search6}') 
            ORDER BY table1.field1 DESC, table1.field2 LIMIT {$radiob};

还有 plpgsql 中的东西?我的意思是,如果我将上面的内容翻译成 plpgsql,我会在速度或效率方面再获益吗?我应该坚持 PHP 中乏味的、动态的语句,还是疯狂使用 plpgsql?

两种情况下查询的执行时间相同。如果您 运行 来自 PLpgSQL 的客户端查询并不重要。区别在于结果处理。当您在服务器端(来自 PLpgSQL)处理结果时,网络和数据类型转换开销为零。客户端的数据处理成本要高得多 - 对于频繁调用的查询或大结果,客户端的处理速度要慢得多。

存储过程(服务器端代码)的另一个好处是异构环境的可访问性(您可以很好地共享此代码)。 PHP 您只能从 PHP 或通过 HTTP 协议调用的代码。但是这个优势在单体环境中并不显着(all is Java or all is PHP)。