私は別のテーブルからのエントリのメタデータを保持しているテーブルを持っています。MySQL:1つのテーブルを複数回検索していますか?
id entry_id property value
1 12 color blue
2 12 shape circle
3 13 color red
4 13 shape circle
5 14 color blue
6 14 shape square
7 15 material stone
8 12 material plastic
今、私は色が青あるすべてのエントリを選択するように、性質のため、このテーブルを検索したい:メタデータ表には、この(私はそれがより明白ですので、Idsは関係削除)のように見えます:
select entry_id from table where property = 'color' and value = 'blue'
これまでのところ、とても良いです。しかし、複数の条件がある場合、どのようにクエリを拡張するのですか?たとえば、の色が青のとの形が円のすべてのエントリを検索したいとします。今、私は労働組合でこれを達成したい:
select entry_id from table where property = 'color' and value = 'blue'
union
select entry_id from table where property = 'shape' and value = 'circle'
をこれは明らかに私が見てみたい醜い複数のプロパティを取得します。そして私はそれもあまり速くないと思います。これを行うよりエレガントな方法はありますか?この表の理由は、ユーザーが設定できるメタデータを持つオブジェクトがあるからです。
ありがとうございました!
godd performaceを取得するには、どの解決策をとっても問題がありません。(entry_id、property、value)にインデックスを作成する必要があります。このトリプルがすでに主キーでない場合。 –