gpt4 book ai didi

java - 从 jdbc-pool 到 SQL Server 2008 中特定表的最快验证查询是什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:14 25 4
gpt4 key购买 nike

我通常使用 SELECT 1 作为来自 tomcat jdbc 池的首选验证查询,因为它只返回一行,结果 1 非常快,但今天我发现了一个可怕的错误:

我的数据库只有一个表及其主键并且不可为空。该表有时会被删除,然后根据应用情况再次出现。这就是问题所在,SELECT 1 验证与数据库的连接,因为它已经启动但表丢失,所以我得到一个可怕的异常。

因此,解决方案通过针对数据库中存在的唯一表查找一个验证查询来通过。而且,我需要查询尽可能快,因为应用程序的性能是主要目标之一。

您可以回答一个明显的查询可能是 SELECT 1 FROM THE_TABLE,但此查询为表中的每一行返回 1,这不是很快。

那么,对该表进行更快的验证查询是什么?

编辑

如果我需要返回至少一个结果应该如何验证查询?
我问这个是因为一些池实现,比如 commons-dbcp 不接受没有结果的查询作为经过验证的查询。

最佳答案

这个怎么样,它应该通过提取 0 行而不是实际列来验证表是否存在而不实际加载任何数据。

SELECT TOP 0 1 FROM THE_TABLE

演示:http://www.sqlfiddle.com/#!3/c670b/3


在 SQL SERVER 中也有内置的方法来检查对象是否存在。下面是两个有效地完成同一件事的示例。

select count(1) from information_schema.tables where table_name = 'THE_TABLE'
select OBJECT_ID('THE_TABLE') is not null

关于java - 从 jdbc-pool 到 SQL Server 2008 中特定表的最快验证查询是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708274/

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