データベース内の整数 ID にマップされている Java 列挙型が多数 (30 以上) あります。多くのクエリを変更せずにこれらで並べ替え、並べ替え順序でインデックスを作成できるようにしたいと考えています。
例 - 他の列挙型の多くには十数個のオプションがある可能性があるため、それほど簡単ではないことに注意してください。
表 1: 個人名 (varchar)、性別 (enum) Bob、0 Fred、0 Susan、1 Jamie、2
Java 列挙型 - 男性 (0)、女性 (1)、不明 (2)
person.sex順で「女性」「男性」「不明」の順で並べられるようにしたいです。(または番号順に 1,0,2)。理想的には、この順序は言語に基づいて可変ですが、1 つの言語/データベースでも問題ありません。
case 句で順序付けできることはわかっていますが、動的に生成された多くのクエリを含め、アプリケーション内の非常に多くの場所を変更する必要があります。
また、postgres もサポートしています。これにより、これを列挙型 (1, 0, 2) として定義でき、少なくとも 1 つの言語/データベースについて、これらの問題をすべて解決できます。このようなものは非常に価値があります。
IDと名前で「性別」テーブルを作成し、それでソートすることを考えました。残念ながら、person テーブル (何百万ものエントリ) を性別で並べ替えるには、性別の列 (または並べ替えに役立つ少なくとも 1 つ) にインデックスを作成できないため、かなり時間がかかります。
カスタムタイプの使用も考えましたが、その時点では休止状態と統合する方法がよくわかりません (カスタムタイプは実際にはそれほど柔軟ではないようです)。
任意の考えをいただければ幸いです。ありがとう。