Comment puis-je éviter d'utiliser une table temporaire pour cette requête tout en atteignant toujours le même objectif?Comment éviter d'utiliser une table temporaire pour cette requête simple
EXPLAIN EXTENDED
SELECT DISTINCT id, view_count
FROM
screenshot_udb_affect_assoc
INNER JOIN
screenshot ON id = screenshot_id
WHERE unit_id = 110 LIMIT 0, 6
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE screenshot_udb_affect_assoc ref screenshot_id,unit_id unit_id 4 const 34 100.00 Using temporary
1 SIMPLE screenshot eq_ref PRIMARY PRIMARY 4 source_core.screenshot_udb_affect_assoc.screenshot... 1 100.00
J'ai mis à jour la requête de ne pas utiliser plus RAND()
et au lieu de la LIMIT
sera aléatoire via PHP. Bien qu'il montre encore qu'il est en utilisant une table temporaire
Est-ce que 'unit_id' appartient à' screensho't? Combien de captures d'écran y a-t-il avec 'unit_id = 110'? Combien de 'screenshot_udb_affect_assoc' par' screenshot'? – Quassnoi
Environ 150 captures d'écran pour une unité donnée, probablement 12-15 unités par capture d'écran – Webnet
Pourriez-vous donner un exemple de la nouvelle requête que vous produisez (de préférence avec un EXPLAIN aussi)? –