J'ai besoin de vitesse spécifiques de requête mysql sur une grande table

Salut, je sais qu'il ya beaucoup de sujets dédiés à la requête de l'optimisation de stratégies, mais c'est tellement spécifique que je ne pourrais pas trouver la réponse, n'importe où sur la interenet.

J'ai une grande table de produit dans la boutique en ligne (appx. 180k lignes), et le tableau a 65 colonnes. Ouais ouais je sais sa fait beaucoup, mais j'y stocker des informations sur les livres, les dvd, les bluerays et jeux.

Encore je suis pas tenu compte de beaucoup de cols dans la requête, mais la sélection est toujours assez délicat. Il y a beaucoup de conditions qui doivent être examinées et comparées. La requête ci-dessous

SELECT *
FROM products
WHERE production = 1 
AND publish_on < '2012-10-23 11:10:06' 
AND publish_off > '2012-10-23 11:10:06' 
AND price_vat > '0.5' 
AND ean <> ''
AND publisher LIKE '%Johnny Cash%'
ORDER BY bought DESC, datec DESC, quantity_storage1 DESC, quantity_storege2 DESC, quantity_storage3 DESC
LIMIT 0, 20

J'ai déjà essayé d'y mettre des indices un par un sur les cols dans la clause where et même dans la clause order by, puis j'ai essayé de créer des index composé (production, publish_on, publish_off, price_vat, ean).

Requête est toujours lent (quelques secondes) et il faut être rapide depuis sa boutique en ligne, solution, et les gens quittent car ils ne reçoivent pas leurs résultats rapides. Et je ne suis toujours pas compter le temps j'ai besoin pour effectuer la recherche pour tous trouvé lignes pour que je puisse faire de la pagination.

Je veux dire, la meilleure façon de faire rapide est de simplifier la requête, mais toutes les conditions et que le tri est un must dans ce cas.

N'importe qui peut aider avec ce genre de problème? Est-il même possible de la vitesse de ce type de requête, ou est-il une autre façon de comment je peux par exemple simplifier la requête et de laisser le reste sur le moteur php pour trier les résultats..

Oh, Iam vraiment paumé dans ce.. Partager votre sagesse peple, s'il vous plaît...

Merci beaucoup à l'avance

ne pas utiliser * utilisez uniquement les champs que tu veux
et exécuter une expliquer à voir ce qui se passe
merci de poster le schéma de la table. Il est possible que vous avez un set-up qui pourraient bénéficier de déplacement de colonnes à des tables séparées. Deuxièmement, s'il vous plaît poster le EXPLAIN requête.
Vous avez 3 gamme de conditions et une comparaison de chaîne qui commence avec un générique et un ORDER BY clause. Il n'est pas surprenant que votre requête n'est pas rapide.
Vous pouvez aussi jeter un oeil sur: ajaxline.com/32-tips-to-speed-up-your-mysql-queries

OriginalL'auteur user1768510 | 2012-10-24