Mon problème général est que je veux que les utilisateurs puissent, en effet, ajouter un nombre arbitraire de champs de types différents à associer aux éléments. Donc, une solution que je considérais est la suivante:Implications des performances d'ORDER BY COALESCE dans MySQL
table `items`
item_id | name
table `parameters`
parameter_id | name | type
table `values`
item_id | parameter_id | datetimevalue | datevalue | integervalue | etc...
Si un utilisateur veut ajouter un paramètre « Date de naissance » à certains de ses éléments, nous ajouterons un paramètre à la table des paramètres, puis une entrée dans la table de valeurs pour chaque élément qu'il veut avoir ce paramètre, avec la date allant dans la colonne datevalue et tous les autres champs 'value' left null.
Pour commander ses articles par "Date de naissance", en supposant que ce paramètre a parameter_id = 1, je ne
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...)
Ma question est, sera cette ORDER BY est performant? Fera-t-il bon usage des indices? Fera-t-il du travail inutile?
Ma question générale est: cette approche est-elle une bonne pratique? Y a-t-il une meilleure manière de faire cela?
Merci! C'est de ça que je parle! Je suis toujours curieux si quelqu'un peut me parler d'utiliser ORDER BY COALESCE de cette façon ... –