私はこのクエリを持っています:
SELECT stringa FROM table WHERE stringb = 'x' OR stringb = 'y' OR stringb = 'z'
これは単なる短縮版です。実際のクエリには、1 つのクエリに 1,000 を超える「OR」句があります。
実行には数分かかりますが、これは良くありません。
私は次のように一度に1つのクエリを実行しようとしました:
SELECT stringa FROM table WHERE stringb = 'x'
SELECT stringa FROM table WHERE stringb = 'y'
SELECT stringa FROM table WHERE stringb = 'z'
しかし、それにはさらに時間がかかります。次のような大きなクエリも試しました。
SELECT stringa FROM table WHERE stringb = 'x'
UNION
SELECT stringa FROM table WHERE stringb = 'y'
UNION
SELECT stringa FROM table WHERE stringb = 'z'
しかし、それにはさらに時間がかかりました。
パフォーマンスを向上させるための提案があれば、大歓迎です。重要な場合、私のテーブルは MyISAM です。
編集:
テーブルの構造は次のとおりです。
列:
key (CHAR PRIMARY), stringa (CHAR), stringb (CHAR)
行は次のようになります: (key - stringa - stringb)
key - a - b
key - a - c
key - a - d
key - a - e
key - a - f
key - b - b
key - b - c
key - b - d
key - c - c
key - c - d
key - c - f
key - d - f
etc. etc. ..100万行近くあります。
「stringb」が a OR b OR c などに等しいすべての「stringa」を選択する必要があります。
もちろん、stringa と stringb は単なる 'a' と 'b' ではなく、3 ~ 80 文字の間で変化する長さの CHAR を含みます。
それが何らかの形で役立つことを願っています