我有一个包含三列并使用PHP的小表。
TABLE(id unsigned int(10),gameid unsigned int(10),userid unsigned int(10)) - id,gameid和userid被编入索引。
在某些时候(当玩家加入游戏时)系统将检查游戏中是否已经有100个玩家,如果是,它会检索所有行并对它们执行一些操作,最后行将被删除。< / p>
SELECT Query:
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查询)
哪种方法更好用?
由于
答案 0 :(得分:2)
microtime(true)
是您的PHP朋友。
如果索引以gameid
开头,则“方法1”可能更快,因为它可以在索引中执行COUNT(*)
。
另一方面,有两件事情与之相反:
gameid = 1
行数超过100行(情况似乎并非如此),则会花费更多时间进行完整计数。 “方法2”在100停止。我认为真正的答案是“两者之间没有足够的区别。”