![]() |
1
1
刚刚测试过,在MySQLv5上运行良好 计数(*)通常效率较低,如果:
如果您基于保证生成单个记录(或0)的WHERE子句进行计数 和 DBMS知道这一点(基于唯一索引),那么它应该同样有效。但是,你不太可能总是有这种情况。另外,DBMS可能并不总是依赖于版本和DBMS来实现这一点。 应用程序中的计数(当您不需要行时)几乎总是保证较慢/更糟,因为:
当然,如果您想对该行做一些事情(如果它存在),那么简单地尝试从中提取该行肯定会更快/最好! |
![]() |
2
2
但是我怀疑,如果您只是在检查是否存在,并且不需要以任何方式使用检索到的数据,那么count()查询将更快。速度的快慢取决于数据的多少。 |
![]() |
3
2
最快的可能是询问数据库是否存在以下问题:
|
![]() |
4
1
如果你所做的只是检查是否存在,那么
但是,如果您将检索数据(如果存在),那么只需获取数据并在PHP中检查它,否则您将有两个调用。 |
![]() |
5
1
因为我在数据库里。 计数(1)要比$result->num_行快,因为在$result->num_行中,您要进行2个操作1选择,如果select有一个计数,则要进行计数以获得结果。 除非您还需要来自数据库的信息。 |
![]() |
6
0
如果你想要原始速度,基准!除了其他人提出的方法外:
由于避免了子选择,可能会更快。基准测试。 |
![]() |
7
0
是最好的选择,这种操作在小桌子和大桌子上都非常快。尽管有可能
小桌子上的速度越快,速度的差别就越小。但是如果你有一张大桌子,这个操作会非常慢。
因此,你最好的选择是
|
![]() |
8
-1
我肯定会在PHP中这样做,以减少数据库的负载。 为了数数 和 获取SQL中返回的行,您需要执行两个查询。一个计数,然后一个选择 PHP方法为您提供了一个结果对象中所需的一切。 |
![]() |
Community wiki · SQL语法新手 1 年前 |
|
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
![]() |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
![]() |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |