正如标题所示…我试图找出开销最小的最快方法来确定记录是否存在于表中。
示例查询:
SELECT COUNT(*) FROM products WHERE products.id = ?;
vs
SELECT COUNT(products.id) FROM products WHERE products.id = ?;
vs
SELECT products.id FROM products WHERE products.id = ?;
说<代码>?与< code>'TB100'交换...第一个和第二个查询将返回完全相同的结果(比如...此对话的< code>1)。最后一个查询将按预期返回< code>'TB100',如果< code>id不在表中,则返回nothing。
目的是弄清楚id
是否在表中,如果不在,程序接下来将插入记录,如果是,程序将跳过它或基于本问题范围之外的其他程序逻辑执行UPDATE查询。
哪个更快,开销更少?(这将在每次程序运行中重复数万次,并且每天将运行多次)。
(通过提供的 JDBC 驱动程序从 Java 对 M$ SQL html" target="_blank">服务器运行此查询)
选择TOP 1产品。id FROM产品WHERE产品。id=
将优于您的所有建议,因为它将在找到第一条记录后终止执行。
存在
(或不存在
)是专门为检查某些东西是否存在而设计的,因此应该是(并且是)最佳选择。它将在匹配的第一行上停止,因此它不需要 TOP
子句,并且它实际上不会选择任何数据,因此列的大小不会产生开销。您可以在此处安全地使用选择 *
- 与选择 1
、选择空
值或选择任意列
没有什么不同...(您甚至可以使用无效的表达式,如 SELECT 1/0
,它不会中断)。
IF EXISTS (SELECT * FROM Products WHERE id = ?)
BEGIN
--do what you need if exists
END
ELSE
BEGIN
--do what needs to be done if not
END
我编写了以下代码来检测目录是否存在。方法接受完全限定路径或相对路径。 注意:返回指定目录或文件名的完全限定路径。在我的例子中,这是。 这个代码已经运行了好几个月了。但它突然停止了工作。现在,当目录不存在时,中不会出现异常只返回一个空字符串。 我发布了一个类似的问题,有人建议我应该总是在路径的末尾追加。我试过了,以为我有一次例外,但现在没有例外。 我不知道与我通信的FTP服务器上的行为是否发生了变化
问题内容: 我正在寻找确定一个值是否为完美平方(即其平方根是另一个整数)的最快方法: 我已经通过使用内置Math.sqrt() 函数完成了简单的方法,但是我想知道是否有一种方法可以通过将自己限制为仅整数域来更快地完成操作。 维护查询表是不切实际的(因为大约2 31.5整数的平方小于2 63)。 这是我现在要做的非常简单明了的方法: 问题答案: 我想出一种方法,至少在我的CPU(x86)和编程语言(
问题内容: 考虑这两个例子… 我很想知道这些方法是否更好。我一直使用第一个示例,但是看到很多人在此站点上使用第二个示例。 那么,哪个更好?快点?意图更清晰? 问题答案: 速度更快,但与并不相同。 即使值是,也仅检查密钥是否存在。 而 将返回如果该键存在和价值。
问题内容: 我有一张大桌子可用来工作。我想检查是否有一些记录的parent_id等于我的传递值。目前,我实现的方法是使用“从mytable中选择count(*),其中parent_id =:id”;如果结果> 0,则表示它们确实存在。 因为这是一个非常大的表,并且我不在乎存在的确切记录数,所以我只想知道它是否存在,所以我认为count(*)效率很低。 如何以最快的方式实现此要求?我正在使用Orac
问题内容: 我是Laravel的新手。请原谅新手问题,但是如何查找记录是否存在? 我在这里可以查看是否有记录? 问题答案: 这取决于您之后是否要与用户一起使用,还是仅检查是否存在。 如果要使用用户对象(如果存在): 如果您只想检查 甚至更好
我是拉雷维尔的新手。请原谅这个新手的问题,但是我如何找到是否存在记录? 我可以在这里做什么来查看是否有记录?