10
votes

MySQL Tableau de mémoire VS temporaire VS dans les procédures stockées

Ce qui est préférable d'utiliser dans une procédure stockée: une table temporaire ou une table de mémoire?

Le tableau est utilisé pour enregistrer des données de synthèse stockées pour les rapports. P>

y a-t-il de commerce que les développeurs devraient Soyez conscient? P>

CREATE TABLE t (avg (double)) ENGINE=MEMORY;


1 commentaires

la mémoire est la même temporaire globale à Oracle?


5 Réponses :


4
votes

Une table temporaire n'existera que pour la durée de votre session. Une table déclarée avec moteur = la mémoire persiste à travers les sessions / connexions utilisateur mais n'existera que dans la durée de vie de l'instance MySQL. Donc, si MySQL se fait redémarrer, la table s'en va.


0 commentaires

7
votes

des deux, j'utiliserais une table temporaire pour le rapport.

Une table de mémoire contient des données entre les sessions et les connexions utilisateur, vous devez donc la tronquer à chaque fois pour vous assurer de ne pas utiliser de données de quelqu'un d'autre. En supposant que vous mettiez dans ce qui est nécessaire pour maintenir une table mémoire en fonction de vos besoins, c'est bon - la table Temp est un peu plus sûre du point de vue de la maintenance.


0 commentaires

11
votes

Pourquoi cela est-il limité aux deux options? Vous pouvez faire: xxx

qui fonctionne, bien que je ne sais pas comment vérifier si le moteur de mémoire est réellement utilisé ici.


0 commentaires

3
votes

dans MySQL, les tables temporaires sont sérieusement criblées:

http://dev.mysql.com/doc/refman/5.6/fr/Temporary-table-problems.html xxx


0 commentaires

1
votes

Je voulais juste souligner que, en 2021 avec Mariadb-10.3.27, le code @biziclop a déclaré ne fonctionne plus, ce n'est plus le cas, c'est possible:

CREATE TEMPORARY TABLE tmp1 AS
SELECT * FROM products LIMIT 10;
SELECT * FROM tmp1, tmp1 AS t2;


0 commentaires