数百万行のテーブルがあり、特定の ID の最後の行を取得する必要があります
たとえば、device_id = 123 を持つ最後の行 AND device_id = 1234 を持つ最後の行
テーブルが非常に大きく、順序付けに時間がかかるため、テーブルを順序付けせずに最後の 200 を選択し、それらの 200 を順序付けして必要な行をフェッチすることは可能ですか?
どうすればいいですか?
よろしくお願いします。
アップデート
私のPostgreSQLバージョンは9.2.1です
サンプルデータ:
time device_id data data ....
"2013-03-23 03:58:00-04" | "001EC60018E36" | 66819.59 | 4.203
"2013-03-23 03:59:00-04" | "001EC60018E37" | 64277.22 | 4.234
"2013-03-23 03:59:00-04" | "001EC60018E23" | 46841.75 | 2.141
"2013-03-23 04:00:00-04" | "001EC60018E21" | 69697.38 | 4.906
"2013-03-23 04:00:00-04" | "001EC600192524"| 69452.69 | 2.844
"2013-03-23 04:01:00-04" | "001EC60018E21" | 69697.47 | 5.156
....
このデータの SQLFiddle を参照してください
したがって、device_id = 001EC60018E21 の場合、その device_id を持つ最新の行が必要になります。その device_id を持つ最後の行が必要な行であることは被付与者ですが、テーブルの最後の行である場合とそうでない場合があります。