Je dois sélectionner les données d'une table et l'insérer dans une autre table. Actuellement, le SQL ressemble à ceci:SELECT seulement un certain nombre de lignes à la fois
INSERT INTO A (x, y, z)
SELECT x, y, z
FROM B b
WHERE ...
Cependant, le SELECT est énorme, ce qui entraîne dans plus de 2 millions de lignes et nous pensons qu'il prend trop de mémoire. Informix, la base de données dans ce cas, ne dispose plus de mémoire virtuelle lors de l'exécution de la requête.
Comment procéder pour sélectionner et insérer un ensemble de lignes (disons 2000)? Étant donné que je ne pense pas qu'il y ait des identifiants de ligne, etc.
Essayez «FIRST»; 'LIMIT' est un synonyme supporté 10+: http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.docnotes.doc/uc3/ids_sqlt_docnotes_10.0.html –
Oui, et en le combinant avec 'skip' vous pouvez itérer sur tout l'ensemble dans une boucle .. (* si vous connaissez le nombre total de lignes *) –
et si la table B change, ne courez pas le risque de sauter les lignes que vous n'avez pas copiées? Je sais que je n'ai pas mentionné que la table B peut changer, dans mon cas, ce ne sera probablement pas le cas, mais je ne fais que penser à haute voix ici. – rouble