J'essaie d'optimiser la requête SQL listée ci-dessous.
Il s'agit essentiellement d'un code de moteur de recherche qui récupère les produits en fonction du nom du produit. Il vérifie également le numéro de modèle des produits et si oui ou non il est activé.
Cette exécute en environ 1,6 secondes lorsque je le lance directement à travers l'outil phpMyAdmin, mais prend environ 3 secondes au total pour charger conjointement avec le fichier PHP, il est placé.La requête SQL prend trop de temps
je besoin d'ajouter une fonctionnalité de recherche de catégorie et maintenant que cela plante le serveur MySQL, HELP!
Justin
SELECT DISTINCT
p.products_id,
p.products_image,
p.products_price,
s.specials_new_products_price,
p.products_weight,
p.products_unit_quantity,
pd.products_name,
pd.products_img_alt,
pd.products_affiliate_url
FROM
products AS p
LEFT JOIN
vendors v
ON
v.vendors_id = p.vendors_id
LEFT JOIN
specials AS s
ON
s.products_id = p.products_id
AND
s.status = 1,
categories AS c,
products_description AS pd,
products_to_categories AS p2c
WHERE
(
(
pd.products_name LIKE '%cleaning%'
AND
pd.products_name LIKE '%supplies%'
)
OR
(
p.products_model LIKE '%cleaning%'
AND
p.products_model LIKE '%supplies%'
)
OR
p.products_id = 'cleaning supplies'
OR
v.vendors_prefix = 'cleaning supplies'
OR
CONCAT (CAST (v.vendors_prefix AS CHAR), '-', CAST (p.products_id AS CHAR)) = 'cleaning supplies'
)
AND
p.products_status = '1'
AND
c.categories_status = '1'
AND
p.products_id = pd.products_id
AND
p2c.products_id = pd.products_id
AND
p2c.categories_id = c.categories_id
ORDER BY
pd.products_name
Pouvez-vous poster la sortie de 'EXPLAIN your_query'? – richsage
Combien de temps la requête prend-elle sans la partie de recherche? Est-ce la recherche ou les jointures qui ralentissent les choses? – jeroen
Si vous avez plusieurs lignes, vous devez utiliser les index Mysql. Google à leur sujet, il peut rendre la requête beaucoup plus rapide. –