Mehrere INSERT-Anweisungen und eine einzelne INSERT-Anweisung (einschließlich mehrerer VALUES-Klauseln): Vergleichende Leistungsanalyse
Beim Leistungsvergleichstest mehrerer INSERT-Anweisungen und einer einzelnen INSERT-Anweisung mit mehreren VALUES-Klauseln waren die Ergebnisse unerwartet: Obwohl letztere im Allgemeinen als effizienter angesehen wird, ist die Leistung mehrerer INSERT-Anweisungen besser als die einer einzelnen INSERT-Anweisung Anweisung INSERT-Anweisung.
Um dieses Phänomen zu verstehen, ist es notwendig, die Ausführungspläne der beiden Strategien zu analysieren. Bei der Planung mehrerer INSERT-Anweisungen wird ein Parametrisierungsprozess verwendet, um die Analyse- und Kompilierungszeit zu minimieren. Die Situation ändert sich jedoch erheblich, wenn die Anzahl der VALUES-Klauseln in einer einzelnen INSERT-Anweisung 250 überschreitet.
Die Kompilierungszeit nimmt stark zu
Wenn mehr als 250 VALUES-Klauseln vorhanden sind, wechselt der SQL Server-Compiler von automatisch parametrisierten Plänen zu nicht parametrisierten Plänen. Diese Änderung kann dazu führen, dass sich die Kompilierungszeiten dramatisch verlängern. Der Compiler muss bei der Verarbeitung von Literalen Sortiervorgänge oder ähnliche Vorgänge durchführen, was zu einer nichtlinearen Verlängerung der Kompilierungszeit führt.
Der Einfluss der Zeichenfolgenlänge und wiederholter Werte
Weitere Experimente zeigten, dass längere Stringlängen einen negativen Einfluss auf die Kompilierungseffizienz haben können. Im Gegensatz dazu wirken sich doppelte Werte positiv aus. Beim Erstellen algebraischer Ausdrucksbäume werden doppelte Werte identifiziert, wodurch die Kompilierungszeit verkürzt wird.
Praktische Anwendung
Diese Entdeckung hat wichtige Auswirkungen auf das Datenbankdesign. Bei der Optimierung für eine große Anzahl von Einfügungen mit eindeutigen Werten kann es effizienter sein, mehrere INSERT-Anweisungen mit einer parametrisierten Prozedur zu verwenden. Wenn andererseits doppelte Werte vorhanden sind, ist eine einzelne INSERT-Anweisung mit mehreren VALUES-Klauseln leistungsfähiger.
Das obige ist der detaillierte Inhalt vonMehrere INSERT-Anweisungen vs. einzelne INSERT-Anweisungen: Wann übertrifft eine die andere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!