J'ai une base de données mais je prévois un problème de vitesse. Parce que toutes mes données sont sauvegardées séparémentOptimiser la requête Mysql dans une base de données de valeurs d'attributs
Product table:
id int auto_inc PRI
name var_char(64)
attribute_table:
attr_id int auto_inc PRI
name var_char(64)
attribute_value:
attr_id int
product_id
value
mais quand je fais une recherche avancée je reçois querys ENORM comme
select * from product_table as pt
cross join attribute_value as av ON av.product_id = pt.id AND av.value LIKE "test"
cross join attribute_table as at ON at.attr_id = av.attr_id AND at.name = "test"
cross join attribute_value as av ON av.product_id = pt.id AND av.value LIKE "test2"
cross join attribute_table as at ON at.attr_id = av.attr_id AND at.name = "test2"
cross join attribute_value as av ON av.product_id = pt.id AND av.value LIKE "test3"
cross join attribute_table as at ON at.attr_id = av.attr_id AND at.name = "test3"
mais je suppose que ce isnt vraiment rapide. mais y a-t-il un moyen d'optimiser? ou quelques trucs que je peux utiliser pour chercher plus vite comme une sorte d'encaissement?
Qu'est-ce que votre requête est censée faire exactement? Vous voulez probablement utiliser LEFT JOIN, et probablement vouloir ajouter des index, mais jusqu'à ce que je puisse comprendre ce que vous essayez de sélectionner je ne peux pas vraiment vous aider. –