我们都知道,在应用端过滤使用WHERE更高效。但是,使用PostgreSQL函数比应用程序代码更高效吗?这是一个参考示例:
给出array = [1, 2, NULL]
...
array_remove(array, NULL)
VS
result = SQL.execute(array); result.remove_null_values()
假设我必须在应用程序中运行代码,将每个代码移动到SQL中是否真的值得?如同,获得主要表现(> 10%)。
答案 0 :(得分:1)
如果性能很重要,则根据您的具体数据处理需求进行分析。
在您的示例中:假设无论如何都需要删除NULL值,让Postgres执行此操作是有意义的,因为这意味着需要将更少的数据返回给您的应用程序。
让Postgres完成这项工作的其他好处包括:在您自己的应用程序中维护更少的代码,并重复使用已在Postgres中提供的经过良好测试的代码。
答案 1 :(得分:1)
这是一种权衡。如果在数据库中进行工作意味着通过网络发送更少的东西,那可能就是胜利。但请记住,通常应用程序会横向扩展,数据库会垂直扩展,因此将大量工作推入数据库可能会在以后出现问题。