👋
インデックスのソート順
Daily Blogging81日目
B-treeインデックスってソート順も指定できるんですねと
PostgreSQL以外にも指定できるDBはあるらしい
ソートのオプション
ソートってACSとDESCだけでしょ?と思っているあなたっ
まぁほぼほぼ間違ってないです
デフォルトだとASCでB-treeインデックスが作成されます
DESCの場合
こういう指定ができる
CREATE INDEX idx_created_at_desc ON my_table (created_at DESC);
この場合、created_atのDESCでインデックスがソートされる
システムにおいて、created_atを降順で取得するケースがほとんどの場合はインデックスも降順にソートしておいてあげることで、ORDER BYする時のパフォーマンスが良くなる可能性がある。
複合インデックスの場合
複合インデックスでもソートは指定できる。
カラムごとにソート順は指定可能
CREATE INDEX idx_orders_user_date ON orders (user_id ASC, order_date DESC);
どうするNULL?
NULLを最初に持ってくるのか、それとも最後に持ってくるのか
そこも指定できる
デフォルトだと
ASC : NULL LAST
DESC: NULL FIRST
指定の仕方はこんな感じ
CREATE INDEX idx_tasks_priority_due ON tasks (priority DESC, due_date ASC NULLS FIRST);
CREATE INDEX idx_tasks_due_asc ON tasks (due_date DESC NULLS LAST);
Discussion