在 MySQL 中,通常最好COUNT(*)
先确定是否应该执行 SELECT * 来实际获取行,还是SELECT *
直接执行然后检查它是否返回任何行更好?
问问题
238 次
6 回答
1
这取决于您是否需要该号码,但特别是在mysql
有一个calc_found_rows
IIRC 时。查找文档。
于 2012-09-19T18:22:07.147 回答
1
总是SELECT [field1, field2 | *] FROM.... The SELECT COUNT(*)
只会使您的代码膨胀,增加额外的传输和数据开销,并且通常无法维护。
于 2012-09-19T18:22:28.003 回答
1
除非您锁定有问题的表,否则执行 aselect count(*)
是没有用的。考虑:
过程1:
SELECT COUNT(*) FROM T;
过程2:
INSERT INTO T
过程1:
...now doing something based on the obsolete count retrieved before...
当然,在服务器环境中锁定表并不是一个好主意。
于 2012-09-19T18:26:43.570 回答
0
形式为2个查询,后者为1个查询。每个查询都需要与数据库服务器对话。算一算。
于 2012-09-19T18:23:29.260 回答
0
答案与许多此类问题一样-“视情况而定”。当您在表上没有索引时,您不应该执行这两个查询。一般而言,仅执行 COUNT 会浪费 IO 时间,因此如果此操作可以帮助您在大多数情况下节省花费在 IO 上的时间,那么它可能是一个选择。
于 2012-09-19T18:25:49.747 回答
0
在某些情况下,某些数据库驱动程序实现可能不会为返回记录本身的 select 语句返回实际选择的行数。当您需要在选择实际数据之前知道结果记录集的精确大小时,预先发出的“count(*)”很有用。
于 2012-09-19T18:28:32.003 回答