A finalidade do
OR
-- como você suspeita -- é lidar com o caso em que há empates nas pontuações. A ideia é fazer uma classificação estável incluindo o id
, então isso está recebendo tudo depois (score, id)
. Presumivelmente, os valores usados para
score
e id
são os últimos valores vistos (provavelmente na página anterior, mas isso é especulação). Uma classificação "estável" é aquela que retorna as linhas na mesma ordem sempre que é aplicada. Como as tabelas SQL representam não ordenadas sets, empates implicam em um instável ordenar. Incluindo o
id
torna estável (assumindo que id
é único. O Postgres na verdade suporta uma sintaxe mais simples:
where (score, id) > (11266, 4482)
Observe que também removi as aspas simples. Os valores parecem números, portanto, devem ser tratados como números e não como strings.