J'ai une requête assez complexe dans MySQL qui ralentit considérablement quand l'une des jointures est faite en utilisant un OR. Comment puis-je accélérer cela? la jointure correspondante est la suivante:Optimisation pour un OU dans une jointure dans MySQL
LEFT OUTER JOIN publications p ON p.id = virtual_performances.publication_id
OR p.shoot_id = shoots.id
La suppression de l'une ou l'autre condition dans le bloc OR réduit le temps de requête de 1,5 s à 0,1 s. Il y a déjà des index sur toutes les colonnes pertinentes auxquelles je peux penser. Des idées? Les colonnes utilisées ont toutes des index. En utilisant EXPLAIN, j'ai découvert qu'une fois que l'OR arrive en jeu, MySQL finit par ne plus utiliser aucun des index. Y a-t-il un type particulier d'index que je peux faire qu'il utilisera?
Est-ce vrai aussi pour PostgreSQL? S'il vous plaît voir ma question ici si vous êtes familier: http://stackoverflow.com/questions/1677538/advanced-indexing-involving-or-ed-conditions-pgsql –
J'ai posté une réponse à votre autre question. –