インデックスはありますか
( eveDate, msisdn )
これにより、インデックスがカバーされ、ID の実際のデータ ページに移動する必要がなくなりますが、where 句の「eveDate」部分によってクエリが最適化されます。
フィードバックごとの提案。
データが日付ベースの場合は、問題の日付 (または、時間ごとのインデックスがあると述べたので、作業に適している場合は時間ごと) と ID の数だけを含む別のテーブルを用意することをお勧めします。 . 1 日の活動が変わらない (またはめったにない) 場合、このテーブルにはカウントが表示されます。過去 10 日間のように、夜間に実行して 1 日/1 時間ごとにカウントを更新したとしても、その後のクエリはほぼ瞬時に実行されます。
さらに、これらすべてのレコードを使用して、問題のテーブルにトリガーを作成することもできます。新しいレコードが追加されると、カウンターテーブルへの挿入/更新が行われます...
update CountersSummary
set TotalCount = TotalCount +1
where eveDate = just date portion of DateTimeValueOfNewRecord
and eveHour = hour of DateTimeValueOfNewRecord
if the record count updated = 0
insert into CountersSummary ( eveDate, eveHour, TotalCount )
values ( just date portion of DateTimeValueOfNewRecord,
hour of DateTimeValueOfNewRecord,
1 )
end if