Mysql
 sql >> Base de données >  >> RDS >> Mysql

la copie dans la table temporaire prend beaucoup de temps

La table temporaire n'est peut-être pas la meilleure option en fonction de ce que vous essayez d'accomplir... Il peut s'avérer utile de créer une table avec une certaine consolidation des données pour réduire la portée des deux prochaines requêtes, mais il est rarement efficace de le faire.

De plus, les tables temporaires ne sont pas accessibles plusieurs fois, une vraie table serait donc nécessaire.

La création d'une table nécessite des écritures sur disque, ce qui est beaucoup moins efficace qu'une simple sélection dans la RAM. En utilisant les méthodes de mise en cache, vous pouvez récupérer très rapidement le résultat d'une sélection précédente. Vous pouvez utiliser cette sélection comme partie FROM de vos requêtes pour la rendre plus rapide que le regroupement dans une énorme base de données. Mais même alors...

Nous évoluons sur un jeu de données d'environ 1To, les grosses requêtes sont des trouvailles produits selon les droits des utilisateurs (catégorie,boutique,...) nous avons essayé de créer un tableau pour chaque utilisateur pointant vers les produits sur lesquels il a les droits et utilisez ensuite cette table pour récupérer les données sans nécessiter d'énormes conditions d'emplacement, mais l'utilisation du SSD était toujours lente. Nous venons donc de vider une énorme RAM sur le serveur et le SELECT que nous aurions utilisé pour remplir les tables temporaires est exécuté pour chaque utilisateur lors de la connexion, puis utilisé comme FROM et tout est parfait.