L'INDICE de FORCE mySQL ...où dois-je les mettre?
J'ai le texte suivant requête mySQL qui fonctionne parfaitement bien. Sauf que j'ai besoin d'ajouter un "INDICE de FORCE" et je n'en suis pas sûr où je dois le faire. J'ai essayé à peu près tous les lieux et de toujours recevoir une erreur mySQL. Ce que je fais mal?
Voici l'original de la requête:
$sql_select_recent_items = $db->query("SELECT * FROM (SELECT owner_id, product_id, start_time, price, currency, name, closed, active, approved, deleted, creation_in_progress FROM db_products ORDER BY start_time DESC) as resultstable
WHERE resultstable.closed=0 AND resultstable.active=1 AND resultstable.approved=1 AND resultstable.deleted=0 AND resultstable.creation_in_progress=0
GROUP BY resultstable.owner_id
ORDER BY start_time DESC");
La requête est construite de cette façon afin que je puisse faire le "ORDER BY" avant le "GROUP BY", dans le cas où vous vous poseriez la question.
Ce que je dois ajouter est la suivante:
FORCE INDEX (products_start_time)
Je l'ai essayé à peu près partout sans succès, ce qui m'amène à croire qu'il y a quelque chose de plus complexe que je suis absent?
Vous devez vous connecter pour publier un commentaire.
La syntaxe pour les indicateurs d'index est documenté ici:
http://dev.mysql.com/doc/refman/5.6/en/index-hints.html
Indice aller à droite après la table de référence:
AVERTISSEMENT:
Si vous utilisez
ORDER BY
avantGROUP BY
pour obtenir la dernière entrée par owner_id, vous êtes à l'aide d'un standard et de sans-papiers comportement de MySQL pour le faire.Il n'y a aucune garantie qu'il va continuer à travailler dans de futures versions de MySQL, et la requête est susceptible d'être une erreur dans les autres SGBDR.
De recherche de la plus-n-p-groupe la balise pour les explications sont nombreuses et de meilleures solutions pour ce type de requête.