ベース テーブルを変更できない場合は、非正規化された 5 つの列を origin と value の 2 つの列に変換する VIEW を作成します。したがって、これがあるとします:
Table notNormal (
primaryKey,
someValue,
foreignNotNormal01,
foreignNotNormal02,
foreignNotNormal03,
foreignNotNormal04,
foreignNotNormal05
)
私はこれを作成します:
CREATE MATERIALIZED VIEW fixedThis AS
SELECT primaryKey, someValue, 'FKCOL01' AS foreignNotNormalOrigin, foreignNotNormal01 AS foreignNotNormalColValue
WHERE foreignNotNormal01 IS NOT NULL
UNION
...
...
SELECT primaryKey, someValue, 'FKCOL01' AS foreignNotNormalOrigin, foreignNotNormal05 AS foreignNotNormalColValue
WHERE foreignNotNormal05 IS NOT NULL
次に、fixedThis に対する私の SELECTS は、外部キー列の値が何であれ、結果のみを表示しています。
単純な高速化が必要な場合はインデックスを使用しますが、実際にはデータ モデルを修正する必要があります。