gpt4 book ai didi

java - 哪个更好 : Query database twice or create a function to query once

转载 作者:行者123 更新时间:2023-11-29 13:04:41 24 4
gpt4 key购买 nike

所以我最近开始使用 postgres。而且由于我不能执行“IF else”,除非在一个函数中,我很好奇哪个是更好的资源明智和性能明智的。 1. 创建如下函数来查询存储 id 的数据库。检查 id 是否为空,如果是 insert else return the id;

CREATE OR REPLACE FUNCTION getallfoo() RETURN INT AS
$BODY$
DECLARE
id INTEGER := (SELECT id FROM foo where (lots of condition checks 15+);
BEGIN
IF id is null then
INSERT INTO foo(a,b,c,d,e,f) SELECT (1,2,3,4,5,6) RETURNING id INTO id;
return id;
ELSE
RETURN id;
END IF;
END;
$BODY$
Language 'plpgsql';
select * from getallfoo();

或 2:首先尝试插入数据库,执行如下操作。然后假设插入失败查询数据库。我有理由先插入,这不是这个问题的重点。我知道大多数人会说先查询,然后如果不存在则插入。

INSERT INTO foo (a,b,c,d,e,f, ........, 15+) SELECT (1,2,3,4,5,6, ........., 15+) 
WHERE NOT EXIST(SELECT 1 from foo where a=1, b=2, c=3, up to 15);

由于我在 Java 中工作,所以我只会检查 rs.getGeneratedKeys() = 0;如果插入失败,我将重新查询数据库中的 id;

SELECT id from foo where a=1, b=2, c=3, ect;

所以问题是因为我在查询中的条件检查很长是否最好创建一个函数并查询一次数据库。或者只是跳过函数并查询两次。我正在对大约 50 个不同的表进行这些类型的插入。

附带的问题是您可以使用 preparedStatement(上述函数)在 java 中创建一个函数吗?结果集 rs = ps.executeUpdate();

最佳答案

不建议对同一数据多次访问数据库,因为它会降低应用程序的性能。因此,如果您可以在单个函数中执行任务而不是多次查询数据库,那么您应该使用函数。

关于java - 哪个更好 : Query database twice or create a function to query once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17454748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com