Ce titre est la question. Je suis curieux de connaître la réponse. Quelqu'un a dit
sélectionner dans est connecté de manière minimale dans la base de données du modèle de récupération simple ... Je n'y suis pas allé du tout.
Extrait de Microsoft:
La quantité de journalisation pour SELECT ... INTO dépend du modèle de récupération en vigueur pour la base de données. Sous le modèle de récupération simple ou le modèle de récupération enregistré en bloc, les opérations en bloc sont enregistrées de manière minimale. Avec une journalisation minimale, l'utilisation de l'instruction SELECT… INTO peut être plus efficace que la création d'une table, puis le remplissage de la table avec une instruction INSERT
Cherche de l'aide
Merci
SELECT INTO
peut être enregistré de manière minimale lorsque vous n'utilisez pas la récupération complète.Réponses:
Quelques idées / théories:
SELECT INTO ... permet au SGBDR de déterminer l'ordre de tri en fonction de l'ordre de votre table d'origine. Si vous insérez dans une table existante, un tri peut être nécessaire pour faire correspondre un ou des index cluster (s) ou non cluster (s).
Aucun index - lorsque
SELECT INTO...
le SGBDR sait avec certitude qu'il n'y a aucun index préexistant à mettre à jour.Pas de conflit - puisque la table dans laquelle vous insérez n'existe pas, SQL Server n'a pas à se soucier du verrouillage au niveau des lignes ou de la gestion des conflits. Rien d'autre ne peut référencer la table que vous créez car elle n'existe pas.
Cela étant dit, il existe d'autres façons de s'insérer dans un tableau très rapidement.
Assurez-vous que vos clés d'index en cluster correspondent lorsque cela est possible. Cela signifie qu'il n'y a pas de tri à la volée
Désactivez tous les index non groupés. Explicite.
Réglez le mode de récupération sur simple et tracez l'indicateur 610 sur
ON
. Utilisez leTABLOCK
conseil sur votre table cible et leNOLOCK
conseil sur votre table source.Par exemple, supposons que tablea et tableb ont le même index clusterisé:
D'après mon expérience, cela est plus rapide que d'utiliser
SELECT INTO...
et de créer ensuite l'index clusterisé. Veuillez noter que cela peut également fonctionner sur une table qui contient déjà des données, ce qui est un scénario beaucoup plus utile.ÉDITER:
Voici un livre blanc fantastiquement détaillé de MS pour les performances de chargement des données dans Sql Server 2008.
la source