此表包含服务器监控记录。一旦服务器无法 ping,它就会插入新记录。因此,一台服务器可能会发生多次故障。我想获取 SERVER 3 失败的记录数。
这是failure_id
主键所在的表。
failure_id server_id protocol added_date
---------- --------- -------- ---------------------
1 1 HTTP 2013-02-04 15:50:42
2 3 HTTP 2013-02-04 16:35:20
使用 (*) 计算行数
SELECT
COUNT(*) AS `total`
FROM
`failures` `f`
WHERE CAST(`f`.`server_id` AS CHAR) = 3;
使用 server_id 计算行数
SELECT
COUNT(`f`.`server_id`) AS `total`
FROM
`failures` `f`
WHERE CAST(`f`.`server_id` AS CHAR) = 3;
使用 SUM 计算行数
SELECT
IFNULL(SUM(1), 0) AS `total`
FROM
`failures` `f`
WHERE CAST(`f`.`server_id` AS CHAR) = 3;
以上所有查询都返回正确的输出。但是我的数据库将来会很大。根据性能最好使用哪种方法?提前致谢...