実際の検索に合わせてキーを並べる
複合B-tree(例: (status, ordered_at))は、まず先頭列のstatusで並べ、同じstatusの中をordered_atで並べます。status = 'paid'のように先頭列を等号で絞り込めば索引内の狭い範囲だけで済みますが、ordered_atだけで絞り込むと該当する値が索引全体に散らばるため、探す範囲は広くなります。ただし後続列だけでも役立つ場合があるため、「使える/使えない」ではなく「どれだけ効率的か」という程度の問題として理解します。
列順を決めるものは?