gpt4 book ai didi

php - 检查行是否存在,最有效的方法?

转载 作者:行者123 更新时间:2023-11-29 06:00:21 24 4
gpt4 key购买 nike

SQL查询/P1/

  1. SELECT EXISTS(SELECT/p2/FROM table WHERE id = 1)
  2. SELECT/p2/FROM table WHERE id = 1 LIMIT 1

SQL 选择/P2/

  1. COUNT(id)
  2. id

PHP PDO 函数/P3/

  1. fetchColumn()
  2. rowCount()

在以下 3 个部分中,检查行是否存在的最佳方法是什么,具有和不具有检索数据的能力。

可检索:

/Query/ SELECT id FROM table WHERE id = 1 LIMIT 1

/函数/ rowCount()


不可挽回

/Query/ SELECT EXISTS(SELECT COUNT(id) FROM table WHERE id = 1)

/Function/ fetchColumn()

在您看来,最好的方法是什么?

最佳答案

最好 我猜你的意思是在 MySQL 服务器和客户端上消耗最少的资源。

就是这个:

      SELECT COUNT(*) count FROM table WHERE id=1

您会得到一个单行单列的结果集。如果该列为零,则未找到该行。如果该列是一列,则找到一行。如果列大于一列,则找到多行。

出于几个原因,这是一个很好的解决方案。

  1. COUNT(*) 非常高效,尤其是当 id 被索引时。
  2. 它在您的客户端软件中有一个简单的代码路径,因为它总是只返回一行。您不必担心没有行或多行等边缘情况。
  3. SQL 尽可能清楚地说明了您要执行的操作。这对下一个处理您的代码的人很有帮助。

添加 LIMIT 1 如果添加到此查询,则不会执行任何操作。本质上,它已经是一个单行结果集。您可以添加它,但随后您会让下一个查看您的代码的人想知道您试图做什么,并想知道您是否犯了某种错误。

COUNT(*) 计算与 WHERE 语句匹配的所有行。 COUNT(id) 稍微慢一些,因为它计算所有行,除非它们的 id 值为空。它必须进行检查。出于这个原因,人们通常使用 COUNT(*) 除非他们有可能想要忽略空值。如果您将 COUNT(id) 放入您的代码中,下一个处理它的人将不得不花一些时间通过计算 id 而不是*

您可以使用任何一个;他们给出相同的结果。

关于php - 检查行是否存在,最有效的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45526560/

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