SELECT EXISTS(SELECT /p2/ FROM table WHERE id = 1)SELECT /p2/ FROM table WHERE id = 1 LIMIT 1COUNT(id)idfetchColumn()rowCount()从以下 3 部分来看,检查行是否存在以及是否能够检索数据的最佳方法是什么。
/询问/ SELECT id FROM table WHERE id = 1 LIMIT 1
/功能/ rowCount()
/询问/ SELECT EXISTS(SELECT COUNT(id) FROM table WHERE id = 1)
/功能/ fetchColumn()
您认为,最好的方法是什么?
我猜你所说的最好是指在 MySQL 服务器和客户端上消耗最少的资源。
就是这样:
SELECT COUNT(*) count FROM table WHERE id=1
Run Code Online (Sandbox Code Playgroud)
您将得到一个单行、一列的结果集。如果该列为零,则未找到该行。如果该列是一列,则找到一行。如果列大于一,则找到多行。
出于以下几个原因,这是一个很好的解决方案。
COUNT(*)效率相当高,尤其id是在建立索引的情况下。LIMIT 1如果添加到此查询中,添加将不会执行任何操作。本质上它已经是一个单行结果集。您可以添加它,但这样会让下一个人查看您的代码想知道您想要做什么,并想知道您是否犯了某种错误。
COUNT(*)计算与该语句匹配的所有行WHERE。COUNT(id)稍微慢一些,因为它计算所有行,除非它们的id值为空。它必须进行这项检查。因此,人们通常会使用COUNT(*)除非有机会他们想忽略空值。如果您输入COUNT(id)代码,下一个处理该代码的人将不得不花一些时间来弄清楚您通过计数id而不是通过计算是否有什么特殊意义*。
您可以使用其中之一;他们给出相同的结果。
| 归档时间: |
|
| 查看次数: |
2881 次 |
| 最近记录: |