我的问题很简单,在标题中。谷歌和堆栈溢出什么也没给我,所以我想是时候问一个问题了。
我目前正在为用户注册到我的网站时进行 sql 查询。我总是只使用准备好的语句 b/c 可调用语句中的额外编码,并且常规语句的性能影响都是关闭的。然而,这个查询让我想到了可能替代我之前的一种适合所有(准备好的语句)方式的方法。
此查询总共有 4 次到数据库的往返行程。步骤是
- 将用户插入数据库,在结果集中取回生成的密钥(他们的用户 ID)。
- 获取用户 ID 并在相册表中插入一行。取回生成的密钥(专辑 ID)
- 获取专辑 ID 并在图像表中插入一行。取回生成的密钥(图像 id)
- 获取图像 id 并使用图像 id 更新用户表的当前默认列
旁白:对于任何对我在插入后取回密钥的方式感兴趣的人Statement.RETURN_GENERATED_KEYS
,您可以在此处阅读一篇很棒的文章 - IBM 文章
所以无论如何我想知道使用4个往返(但可缓存)准备好的语句是否可以,或者我是否应该使用批处理(但不可缓存)语句?