2017-08-02 9 views
0

Ma requête utilise une table temporaire, ce que je fais mal, quelqu'un peut-il me dire?Mysql utilisant temporaire

EXPLAIN SELECT DISTINCT t.city_id FROM (SELECT city_id FROM `geo__base` Where country = 'DE')as t 


id select_type  table type possible_keys key  key_len  ref  rows Extra 
1 SIMPLE geo__base ref  country  country  8 const 43460 Using index condition; Using where; Using temporar... 

Merci à tous

+1

Il n'y a pas besoin de la sous-requête. Faites juste 'select city_id distinct de geo_base où ...'. Cela dit, une table temporaire n'est pas nécessairement mauvaise. C'est une table en mémoire. Seulement quand il dit 'table temporaire sur le disque' il devient mauvais. – fancyPants

Répondre

0

Essayez quelque chose comme ceci:

SELECT DISTINCT city_id FROM (SELECT city_id FROM geo_base WHERE country = 'DE') tmp; 

Ou comme Fancypants commentaires ci-dessus, il suffit d'utiliser ceci:

SELECT DISTINCT city_id FROM geo_base;