Pourquoi est-MySQL 'insert into ... sélectionner de manière beaucoup plus lente d'un seul?

Je suis en train de stocker le résultat d'une requête dans une table temporaire pour un traitement ultérieur.

create temporary table tmpTest
(
    a FLOAT,
    b FLOAT,
    c FLOAT
)
engine = memory;

insert into tmpTest
(
    select a,b,c from someTable
    where ...
);

Mais pour une raison que l'insert prend une minute, alors que celle-ci lui seul ne prend que quelques secondes. Pourquoi serait-il beaucoup plus de temps pour écrire les données dans une table temporaire à la place de l'impression sur mon SQL outil de gestion de sortie de la???

Mise à JOUR
Ma Configuration:
MySQL 7.3.2 Cluster avec
8 Debian Linux ndb données des nœuds
1 SQL Nœud (Windows Server 2012)

La table, je suis en cours d'exécution de la sélectionner sur un ndb table.

J'ai essayé de savoir, si le plan d'exécution serait différente lors de l'utilisation de 'insert into..', mais ils ont la même apparence:
(désolé pour la mise en forme, stackoverflow n'ont pas de tables)

id select_type type de table possible_keys clé key_len ref lignes Supplémentaires 
1 PRIMAIRE <subquery3> TOUS les \N \N \N \N \N \N 
1 PRIMAIRE foo ref PRIMAIRE PRIMAIRE 3 <subquery3>.fooId 9747434 à l'Aide de où 
2 sous-REQUÊTE someTable gamme de PRIMAIRE de PRIMAIRE 3 \N 136933000 à l'Aide de où les à poussé l'état de santé; l'Aide de ce taux; l'Aide temporaire; à l'Aide de filesort 
3 MATÉRIALISÉ tmpBar TOUS \N \N \N \N 1000 \N 

CREATE TABLE ... SÉLECTIONNEZ est lent, trop. 47 secondes vs 5 secondes sans table insert/créer.

Vous devriez être plus précis et de fournir des données que vous avez écrit. Aussi INSERT .. SELECT syntaxe est différente. Votre exemple de s'entraîner dans l'erreur.
bonne question. Je ne sais pas vraiment comment mysql réserves memory pour lui-même. Si elle passe par le système d'exploitation de l'api, il pourrait juste demande pour la mémoire, ce qui serait alors servi comme ram ou disque dur de l'espace, selon l'état du système. Voir windows octets virtuels de gestion.
Avez-vous essayé un CREATE TABLE ... SELECT-type de requête pour la comparaison? dev.mysql.com/doc/refman/5.0/en/create-table-select.html
pourquoi ne vous dire que ma syntaxe est mauvaise? Je ne reçois pas toutes les erreurs.
J'ai fait 🙁 Même résultat que INSERT INTO ... SÉLECTIONNEZ

OriginalL'auteur Ben | 2013-10-09