2011-06-22 10 views
1

WHERE CONCAT(att.subjectId、 '#'、att.classId)IN( '132#100')というwhere句を持つselectクエリがあります。 subjectIdとclassIdにコンポジットインデックスを追加しましたが、これらのインデックスはそのような動的カラムの用途に使用されます。そうでなければ、CONCAT(att.subjectId、 '#'、att.classId)のような動的列に列を作成することは可能です。mysqlの動的列にインデックスを追加する

+0

要するに、いいえ、できません。 –

答えて

1

ベストMySQLは、式/関数の結果に対してインデックスを作成する手段を提供していないことを認識しています。

回避策は、トリガーを使用して余分なフィールドにデータを入力し、インデックスを作成することです。

+0

ありがとうございました..あなたの回避策の例を教えてください。 – Abhiraj

0

おそらく、関数は "where"節のためのベスト・アイデアではなく、dbmsに強制的にパフォーマンスを奪う「フル・スキャン」を強制します。

"(IN"リストの各用語に対して) "OR"で連結されたいくつかの "(att.subjectId = '132'とatt.classId = '100')を使用し、分離された列の場合。

関連する問題