1

クエリ

SELECT * FROM Table WHERE Path LIKE 'geo-Africa-Egypt-%'

次のように最適化できます。

SELECT * FROM Table WHERE Path >= 'geo-Africa-Egypt-' AND Path < 'geo-Africa-Egypt-zzz' 

しかし、これはどのように行うことができますか:

select * from foodDb where Food LIKE '%apples%";

これはどのように最適化できますか?

4

2 に答える 2

1

1 つのオプションは冗長データです。いくつかの列の途中で発生する文字列の固定セットに対して多くのクエリを実行している場合は、特定の文字列が他の列で見つかるかどうかの情報を含む別の列を追加します。

任意だがトークン化可能な文字列の別のオプションは、トークン (例: apples) と、トークンが発生する実際のテーブルへの外部キー参照を持つ辞書テーブルを作成することです。

一般に、sqlite は設計上、全文検索があまり得意ではありません。

于 2009-07-16T18:09:36.983 に答える
0

速ければ驚きですが、LIKE の代わりに GLOB を試して比較することもできます。

SELECT * FROM foodDb WHERE Food GLOB '*apples*'; 
于 2009-07-16T18:08:29.857 に答える