データベースにsqlite3を使用しています。データベースには、UTF-8 文字列である「名前」フィールドをインデックスとして使用するテーブルがあります。大文字と小文字を区別しない比較を行うために、「name_upper」という新しい列を追加しました。これは、「name」フィールドの UTF-8 大文字バージョンであり、代わりにそれをインデックスとして使用します。
「name」フィールドはテーブル内で群を抜いて最大のフィールドであることが判明したため、「name_upper」フィールドを定義することで、基本的にテーブルのサイズを 2 倍にしました。データベースのサイズは、データベース ファイルが存在するディスク サイズに比べれば小さいままですが、メモリ サイズに比べれば大きくなる可能性があります。
私の質問は、テーブルのサイズを 2 倍にするとパフォーマンスに影響しますか? テーブルをキャッシュするために、より多くのメモリを使用する必要があるのではないかと心配しています。
別の解決策は、大文字と小文字を区別しない UTF-8 比較を実行する新しい照合関数を定義することです (ICU が実装を提供していることは承知しています)。すべての比較で小文字から大文字への変換が必要になるため、その場合のパフォーマンスへの影響はわかりません。