Maison >base de données >tutoriel mysql >Pourquoi plusieurs instructions INSERT sont-elles plus rapides qu'une seule INSERT avec plusieurs VALUES dans SQL Server ?
Plusieurs instructions INSERT surpassent un seul INSERT avec plusieurs VALUES en raison du processus de paramétrage automatique dans SQL Server.
En cas de plusieurs instructions INSERT, chaque instruction est compilée et exécutée indépendamment, ce qui entraîne une surcharge minimale. Cependant, avec une seule instruction INSERT contenant plusieurs VALUES, l'optimiseur de requêtes doit analyser et compiler l'intégralité de l'instruction avant l'exécution, ce qui peut augmenter considérablement le temps de compilation.
La limite pour le paramétrage automatique se situe autour de 250 clauses VALUES. Au-delà de ce point, la taille du plan mis en cache diminue brusquement, le temps de compilation augmente considérablement et l'efficacité du traitement des clauses de valeur diminue de manière linéaire.
Ce comportement découle d'un changement de type de plan. Lors de l'utilisation du paramétrage automatique, le plan est spécifique aux valeurs littérales insérées. Lorsqu'il dépasse la limite, le plan devient non paramétré et doit effectuer des activités qui n'évoluent pas de manière linéaire, comme le tri, ce qui entraîne des temps de compilation plus longs.
L'impact de cela peut être important, notamment lorsqu'il s'agit de chaînes plus longues ou de valeurs uniques. Comme le démontrent les graphiques, l'augmentation de la longueur des chaînes ou l'élimination des doublons entraînent de moins bonnes performances pour l'instruction INSERT unique avec plusieurs méthodes VALUES.
À l'inverse, l'introduction de doublons améliore les performances car SQL Server peut les identifier pendant la phase d'algébrisation et éviter tri inutile.
Par conséquent, pour insérer plusieurs lignes, l'utilisation de plusieurs instructions INSERT est généralement plus efficace qu'une seule instruction INSERT avec plusieurs VALUES, en particulier lorsque traiter des chaînes plus longues ou des valeurs uniques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!