2

3列のsqliteデータベースがあります:

id, word, bitmask

単語の母音からビットマスクを作成するので、特定の母音を含むすべての単語をすばやく見つけることができます。

SELECT word FROM words WHERE bitmask & 7 = 0

2 つの質問があります。

  1. インデックスを追加する必要がありますか? その場合、どの列にどのようにクエリを記述すればよいですか

以下のコードを試しましたが、パフォーマンスの改善は見られませんでした。

CREATE INDEX bitmask_index ON words (bitmask);
  1. 「ビットマスク」列には、1 ~ 256 の値が含まれます。「ビットマスク」列を値でソートするのは良いことでしょうか? その場合、これに対するクエリをどのように記述すればよいでしょうか。
4

1 に答える 1

4
  1. 検索の前に値に関数を適用しているため、インデックス付けが役に立たない可能性があります。通常、これによりインデックス作成の効果が失われます。

  2. ビットマスクのビット位置は、行全体で順序付けられたものに対応していないため、ビットマスクの並べ替えはほとんど意味がありません(それらの順序付けは、同じ行内の何か、たとえば、ある単語の母音に関連付けられています)。

于 2013-03-16T20:27:15.123 に答える