さまざまなオブジェクトでのさまざまなユーザーによる1つの特定のアクションの発生をカウントするテーブルがあります。
CREATE TABLE `Actions` (
`object_id` int(10) unsigned NOT NULL,
`user_id` int(10) unsigned NOT NULL,
`actionTime` datetime
);
ユーザーがこのアクションを実行するたびに、行が挿入されます。各オブジェクトで実行されたアクションの数を数え、「アクティビティ」でオブジェクトを並べ替えることができます。
SELECT object_id, count(object_id) AS action_count
FROM `Actions`
GROUP BY object_id
ORDER BY action_count;
結果を上位n個のオブジェクトに制限するにはどうすればよいですか?LIMIT句は集計の前に適用されるため、間違った結果になります。テーブルは潜在的に巨大(数百万行)であり、おそらく1分間に数十回カウントする必要があるため、これを可能な限り効率的に実行したいと思います。
編集:実際には、マシンは正しいです、そして私はLIMITが適用される時間に間違っていました。私のクエリは正しい結果を返しましたが、それらを提示するGUIは私を失望させました...この種の質問は、この質問を無意味にします。ごめん!