データベースに 2 つの列がある場合。
code varchar(3)
name nvarchar(50)
コードで検索するために varchar を渡すように hibernate に指示する方法は?
休止状態のマッピングでは、文字列が nvarchar にマップされ、次のようなクエリが生成されます。
Select code, name From table where code=N'AAA' (instead of code='AAA')
これは、インデックス シーク操作ではなくインデックス スキャンを引き起こすため、非常に悪いことです (要求されたインデックス ノードに直接移動するのではなく、すべてのインデックス ノードをスキャンします)。
コードは数百万の行といくつかのインデックスおよび外部キーで使用されるため、varchar から nvarchar に変更するとパフォーマンスが低下します (nvarchar は varchar の 2 倍のスペースを使用するため、より多くの IO 操作が行われます)。
Javaタイプではなく、データベースタイプに従ってマッピングを行うようにhibernateに指示する方法はありますか?
ありがとう