Postgresは
select date, symbol, value, created_time
from (select *,
rank() over (partition by date, symbol order by created_time desc) as rownum
from test_table) x
where rownum = 1
date
のすべての組み合わせに対して 、 symbol
、このクエリは value
を返します およびcreated_time
最高の行から(つまり、最後 ) created_time
その日付
の およびsymbol
。
このインデックスをお勧めします:
CREATE UNIQUE INDEX test_table_idx
ON test_table (date, symbol, created_time, value)
カバーです インデックス(クエリに必要なすべての値があり、実際のテーブルにアクセスする必要がなく、すでに持っています)が、 created_time
に注意してください。 前に来る 値コード> 、したがって、データはすでにパーティション順であり、
value
は、どの行を返すかの決定には関与しないため、最も重要度の低い属性です。