0

だから私は自分のウェブサイトに写真用のmysqlテーブルを持っています。すべての写真は、エンティティの 2 つのセットのいずれかに関連付けられているため、2 つの列があります。nEntity1FK、nEntity2FK。

これらの列の 1 つだけが、すべての行で常に非ゼロです。そのため、行の約 50% は nEntity1FK で「0」を持ち、約 50% は nEntity2FK で「0」を持ちます。

これまでのところ、すべて順調です。WHERE nEntity1FK=0条項を追加するまで。やるべきことがあったとしても、突然、物事がかなり遅くLIMIT 0,50なります。

理由はなんとなくわかります。カーディナリティの低いインデックスは良くなく、一般的には使用されないことがわかりました。しかし、代替手段は何ですか?私が考えることができる唯一のことは、すべての写真情報を 1 つではなく 2 つの別々のテーブルに保持することです (両方を必要とするクエリのためにそれらを結合するビューを用意します)。これは私には面倒/面倒に思えます。より良いオプションはありますか?

皆さんありがとう。

4

1 に答える 1

1

解決策はビットマップ インデックスを使用することですが、私が知っているように、MySql はそれをサポートしていません。データを 2 つのテーブルに分割することは可能でしょうか? 1 つは WHERE nEntity1FK=0 で、もう 1 つは WHERE nEntity1FK=1 です。

于 2010-11-10T09:39:26.923 に答える