照合順序(コレーション)
文字列の比較と並べ替えのルール。ORDER BY の結果、インデックスの格納順、'A' = 'a' が成り立つかどうかを決める。文字そのものではなく、言語に依存する。
スウェーデン語では å、ä、ö がアルファベットの末尾に来る。ドイツ語では ä を a の仲間として扱って並べる。データは同じでも順序は違い、どちらも正しい。落とし穴は、インデックスが照合順序のとおりに格納されることだ。データベースの足元でルールが変わると、警告もなくインデックスが壊れる。実際に glibc 2.28 がルールを変更したとき、Linux ディストリビューションをアップグレードした PostgreSQL でインデックスが破損し、ユニーク列に重複が生じることがあった。そのため現在は、バージョン管理できる ICU の照合順序が推奨されている。C 照合順序は生のバイトを比べるので最速で常に安定だが、並びは人間ではなくコンピューターの流儀になる。