Je lance une requête quotidienne pour compiler des statistiques - mais cela semble vraiment inefficace. Ceci est la requête:Optimisation de requête de sous-sélection Mysql
SELECT a.id, tstamp, label_id, (SELECT author_id FROM b WHERE b.tid = a.id ORDER BY b.tstamp DESC LIMIT 1) AS author_id
FROM a, b
WHERE (status = '2' OR status = '3')
AND category != 6
AND a.id = b.tid
AND (b.type = 'C' OR b.type = 'R')
AND a.tstamp1 BETWEEN {$timestamp_start} AND {$timestamp_end}
ORDER BY b.tstamp DESC
LIMIT 500
Cette requête semble être très lente. Toutes mes excuses pour le nom de merde - On m'a demandé de ne pas révéler les noms des tables.
La raison pour laquelle il y a un sous-select est parce que le select externe obtient une ligne de la table a et il obtient une ligne de la table b. Mais aussi besoin de connaître le dernier author_id de la table b, donc je lance une sous-sélection pour retourner celle-là. Je ne veux pas lancer un autre select à l'intérieur d'une boucle php - car c'est aussi inefficace.
Cela fonctionne correctement - j'ai juste besoin de trouver un moyen beaucoup plus rapide d'obtenir cet ensemble de données.
@Matt: Vous devriez essayer les réponses fournies, upvote utile et accepter celui qui a résolu votre problème. Si aucun d'entre eux ne l'a fait, pensez à modifier votre question pour fournir plus d'informations. –