Maison > développement back-end > Golang > Comment regrouper efficacement des instructions SQL à l'aide du package base de données/sql de Go ?

Comment regrouper efficacement des instructions SQL à l'aide du package base de données/sql de Go ?

DDD
Libérer: 2024-12-26 13:31:10
original
937 Les gens l'ont consulté

How to Batch SQL Statements Efficiently Using Go's database/sql Package?

Traitement par lots d'instructions SQL avec le package Go database/sql

En Java, l'exécution de plusieurs instructions SQL dans un lot peut être réalisée via les méthodes PreparedStatement etexecuteBatch(). Mais comment pouvons-nous accomplir la même chose en utilisant le package base de données/sql de Go ?

Le package base de données/sql fournit une fonction Exec qui peut exécuter des instructions SQL. Cependant, cela ne nécessite qu’un seul ensemble d’arguments. Pour regrouper plusieurs instructions, nous pouvons utiliser une fonction variadique et construire une seule instruction SQL qui inclut toutes les instructions individuelles à exécuter.

Voici un exemple :

func bulkInsert(unsavedRows []*ExampleRowStruct) error {
    var (
        valueStrings []string
        valueArgs    []interface{}
    )

    for _, post := range unsavedRows {
        valueStrings = append(valueStrings, "(?, ?, ?)")
        valueArgs = append(valueArgs, post.Column1)
        valueArgs = append(valueArgs, post.Column2)
        valueArgs = append(valueArgs, post.Column3)
    }

    stmt := fmt.Sprintf(
        "INSERT INTO my_sample_table (column1, column2, column3) VALUES %s",
        strings.Join(valueStrings, ","),
    )

    _, err := db.Exec(stmt, valueArgs...)
    return err
}
Copier après la connexion

Ce code construit un instruction SQL unique qui insère toutes les lignes dans la base de données. En passant les arguments (valeurs) de l'instruction individuelle en tant que paramètres variadiques, nous pouvons exécuter plusieurs instructions en un seul aller-retour sur le réseau. Des tests ont montré que cette approche peut être beaucoup plus rapide que l'utilisation des méthodes Begin, Prepare et Commit pour le traitement par lots d'instructions SQL.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal