sql - Fastest way to select row with max value at primary key field -



sql - Fastest way to select row with max value at primary key field -

i have got table:

create table spots( datetime timestamp, market varchar(15), spot numeric(10, 5), primary key (market, datetime) );

i need select row p_market maximum value of datetime filed, less or equal p_datetime, have got 2 opts this:

select * spots market = p_market , datetime = ( select max(datetime) spots market = p_market , datetime <= p_datetime );

and

select * spots market = p_market , datetime <= p_datetime order datetime descending limit 1;

so, question - variant improve performance perspective.

postgres supports window function, should theoretically calculated incrementally rows processed, should provide performance boost on big info sets:

select * (select *, rank() on (order datetime desc) rk spots market = p_market , datetime <= p_datetime) t spots rk = 1

sql performance postgresql greatest-n-per-group

Comments

Popular posts from this blog

maven fortify plugin : Unable to load build session with ID XXXXX .. See log file for more details -

c# - Primavera WebServices does not return any data -

android - Display emoji panel with genymotion - keyboard/touch input? -