MySQL COUNT 对比 SELECT 行性能

MySQL COUNT vs SELECT rows performance

我有一个小的 table 三列并使用 PHP。

TABLE (id unsigned int(10), gameid unsigned int(10), userid unsigned int(10)) - id, gameid 和 userid 被索引。

在某些时候(当玩家加入游戏时)系统将检查游戏中是否已经有 100 名玩家,如果有,它会检索所有行并对它们执行一些操作,最后这些行将被删除.

SELECT 查询:

SELECT * FROM table WHERE gameid = 1 ORDER BY id ASC LIMIT 100

COUNT 个查询:

SELECT COUNT(*) as rows FROM table WHERE gameid = 1 LIMIT 100

删除查询:

DELETE FROM table WHERE gameid = 1 ORDER BY id ASC LIMIT 100

我的问题是关于性能和速度,哪个更好:

方法 1(3 个查询)

方法 2(2 查询)

哪种方法更好用?

谢谢

microtime(true) 是你的 PHP 朋友。

如果有一个以 gameid 开头的索引,"Approach 1" 可能 会更快,因为它可以在索引中执行 COUNT(*) .

另一方面,有两点不利:

  • 3 查询通常比 2 慢。
  • 如果 gameid = 1 的行数超过 100 行(似乎并非如此),则需要花费更多时间进行完整计数。 "Approach 2" 停在 100。

我认为真正的答案是“两者之间没有足够的区别。