0

1 つの TEXT (単語) 列と最大 100 万行のテーブルがある場合、このクエリを最適化する最善の方法は次のとおりです。

SELECT name
FROM searchIndex
WHERE name LIKE '%q%u%e%r%y%'
ORDER BY (CASE
              WHEN name LIKE 'query' THEN 1
              WHEN name LIKE 'query%' THEN 2
              WHEN name LIKE '%query' THEN 3
              WHEN name LIKE '%query%' THEN 4
              WHEN name LIKE 'q%u%e%r%y%' THEN 5
              ELSE 6
          END);

現在、私はSQLiteを使用しています。ただし、任意の (無料の) データベース システムと任意のテーブル構造を試すつもりです。

これは Mac OS X アプリケーション (ドキュメント ブラウザ) に必要で、ドキュメント セットのインデックスを検索するために使用されます。特定の期間に実行されるクエリは多くないため、同時使用は実際には問題になりません。

4

1 に答える 1

0

として一般的なクエリを最適化するために私が知っている実用的な方法はありません%q%u%e%r%y%。しかし、インデックス化された列が多少大きくても、無関係な一致が大量に生成されるため、これは実行するのに役立つクエリではないことはほぼ確実です。(たとえば、質問のテキストは に対して一致しthe alien invasionます。これらの文字がこの順序で含まれているためです。)

SQLite FTS拡張機能は、ここで興味深いものになる可能性があります。これにより、列に表示される単語にインデックスを付けることができます。あなたが説明しているタスクについては、完璧なはずです。

于 2012-10-12T00:33:19.587 に答える