このテーブルには、サーバー監視レコードが含まれています。サーバーがpingに失敗すると、サーバーは新しいレコードを挿入します。そのため、1台のサーバーで複数回障害が発生する可能性があります。SERVER3が失敗した回数のレコード数を取得したいと思います。
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;
上記のクエリはすべて正しい出力を返します。しかし、私のデータベースは将来非常に大きくなるでしょう。パフォーマンスに基づいて、どの方法を使用するのが最適ですか?前もって感謝します...