私の一般的な問題は、ユーザが実際にアイテムと関連付けるために異なるタイプのフィールドの任意の数を追加できるようにすることです。ユーザーは自分のアイテムの一部に「生年月日」パラメータを追加したい場合は、我々はパラメータテーブルに一つのパラメータを追加しますMySQLでのORDER BY COALESCEのパフォーマンスへの影響
table `items`
item_id | name
table `parameters`
parameter_id | name | type
table `values`
item_id | parameter_id | datetimevalue | datevalue | integervalue | etc...
、その後、一つのエントリ:だから私は検討しています一つの解決策は次のとおりです。彼がこのパラメータを持つことを望む各項目の値テーブルでは、日付はdatevalue列にあり、他のすべての 'value'フィールドはnullのままです。
は、私がこの順はパフォーマンスになり、
SELECT * from
items
join values on items.item_id = values.item_id
join parameters on parameters.parameter_id = values.parameter_id
where parameter_id = 1
order by coalesce(values.datetimevalue, values.datevalue, values.integervalue...)
私の具体的な質問があるだろう、= 1 PARAMETER_IDたこのパラメータを想定し、「誕生日」によって彼のアイテムを注文するには?それは指標をうまく使うのだろうか?それは不必要な仕事をしますか?
私の一般的な質問は、このアプローチは良い方法ですか?これを行うより良い方法はありますか?
ありがとうございました!それは私が話していることです!このようにしてORDER BY COALESCEを使用することについて誰かに教えてもらえれば、私はまだ不思議です... –