「明らかな」解決策は、インデックスを作成することです。ただし、メモリ内のバイナリ検索が機能しない場合、インデックスで問題が解決されるかどうかはわかりません。ほぼ同じ量のメモリを占有します。
一致する可能性のあるものを検索し、外部メモリから 1 回のフェッチでいくつかを取得し、比較をすばやく行うことができればいいと思いませんか?
これはデータベースで可能です。アイデアは、「ハッシュ」関数を作成することです。同じハッシュ値を持つものはすべて単語テーブルに格納されます。次に、検索のためにメモリにフェッチされます。
同じハッシュを持つ単語のセットを取得したら、自分で検索を行うことができます。または、これが機能する可能性があります。
select word
from (select word
from words
where hash(word) = hash(YOURWORD)
) t
where t.word = YOURWORD
ポイントは、最初にハッシュ インデックスを使用するように SQL コンパイラを「だまして」から、比較を行うことです。
非常に単純なハッシュ関数は最初の 5 文字かもしれません。したがって、「スパイ」のような単語には 1 つのエントリしかありません。しかし、「マルチ」という言葉には多くの意味があります。単語の表には、「単語」と「ハッシュ」の 2 つの列があります。次に、 hash にインデックスを作成します。. . 最適なパフォーマンスを得るには、words テーブルをハッシュで並べ替えます。単語リストを順序付けすると、一致するすべての単語が 1 ページまたは 2 ページに収まる可能性が高くなり、外部 I/O が最小限に抑えられます。
残念ながら、SQLite には組み込みのハッシュ関数がありません。文字列内の文字値をペアで合計するなどの操作を行うことで、自分で作成できます。