在MySQL中,总是最好先做一个COUNT(*)
来确定你是否应该用SELECT *来实际获取行,或者最好只做SELECT *
直接然后检查它是否返回任何行?
答案 0 :(得分:1)
这取决于您是否需要该号码,尤其是mysql
中有calc_found_rows
,IIRC。查看文档。
答案 1 :(得分:1)
总是SELECT [field1, field2 | *] FROM.... The SELECT COUNT(*)
只会膨胀您的代码,增加额外的传输和数据开销,而且通常是不可维护的。
答案 2 :(得分:1)
除非您锁定有问题的表格,否则执行select count(*)
是没用的。考虑:
流程1:
SELECT COUNT(*) FROM T;
流程2:
INSERT INTO T
流程1:
...now doing something based on the obsolete count retrieved before...
当然,在服务器环境中锁定表格并不是一个好主意。
答案 3 :(得分:0)
表单是2个查询,后者是1个查询。每个查询都需要与数据库服务器通信。做数学。
答案 4 :(得分:0)
答案与许多此类问题一样 - “这取决于”。当你没有表上的索引时,你不应该做的就是执行这两个查询。一般来说,仅执行COUNT会浪费IO时间,因此,如果此操作可以帮助您在MOST情况下节省一些IO时间,那么它可能是一种选择。
答案 5 :(得分:0)
在某些情况下,某些db驱动程序实现可能不会返回返回记录本身的select语句的实际选定行的计数。在您选择实际数据之前需要知道结果记录集的精确大小时,预先发出的'count(*)'很有用。