2009-07-16 10 views
1

クエリSQLiteのクエリの最適化

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%"; 

を最適化することができますか?

答えて

0

もっと速ければ驚いていますが、LIKEではなくGLOBを試して比較することができます。

SELECT * FROM foodDb WHERE Food GLOB '*apples*'; 
+0

これ以上高速ではありません。それでも完全なテーブルスキャンが行われます。 sqliteのEXPLAINを使用して、クエリプラン、つまりクエリに対して実行するvdbeプログラムを表示します。 – laalto

1

1つのオプションは冗長データです。いくつかの列の真ん中にある固定された文字列のセットをたくさん照会している場合は、特定の文字列が他の列にあるかどうかを情報を含む別の列に追加します。

もう1つのオプションは、トークンが存在する実際のテーブルへのトークン(たとえば​​)と外部キー参照を持つ辞書テーブルを作成することです。

通常、sqliteは全文検索ではあまり良くありません。