select *

from post

where id < 20 (커서값)

limit 10


이런 쿼리가 있어 PK를 커서로 써서 10개씩 자연스럽게 더 예전글로가는건데 클러스터링타니까 당연히 빠르겠지

그런데 PK를 UUID로 바꿨어 그래서 생성일자로 하게되었어 


select *

from post

where created_at > '2026-03-09 20:30:11' (커서값)

limit 10


create_at에 인덱스 설정했어

그런데 만약 동일한 시간대에 글이 등록되었다고하면 글 하나가 안보일수가있어


그래서

create_at, uuid 복합인덱스를 만들고


select *

from post

where created_at > '2026-03-09 20:30:11' OR (crated_at = '2026-03-09 20:30:11' AND UUID < 커서UUID)

limit 10


가 되는데 내가 봤을땐 하나의 인덱스를 써서 인덱스 병합은 안일어날거같은데

ai말로는 OR조건때문에 옵티마이저가 범위스캔을 두번하거나 유니온으로 분리할수있다고 하네


select *

from post

WHERE(created_at, UUID) < ( '2026-03-09 20:30:11', 커서UUID)

limit 10

가 해결책이 될 수 있을까



참고로 실제로 일어난 일은 아니고 상황의 가정이야