ホームページ > バックエンド開発 > Golang > SQL を使用して Go で複数のデータ行を同時に効率的に挿入するにはどうすればよいですか?

SQL を使用して Go で複数のデータ行を同時に効率的に挿入するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-14 03:52:09
オリジナル
941 人が閲覧しました

How Can I Efficiently Insert Multiple Data Rows Simultaneously in Go Using SQL?

Go での効率的な複数データの挿入

SQL で複数のデータ行を同時に挿入すると、効率が大幅に向上します。 Go では、SQL のプリペアド ステートメントと複数の値を使用してこれを実現できます。

次のデータについて考えてみましょう:

data := []map[string]string{
   {"v1":"1", "v2":"1", "v3":"1"},
   {"v1":"2", "v2":"2", "v3":"2"},
   {"v1":"3", "v2":"3", "v3":"3"},
}
ログイン後にコピー

データをループして個々の INSERT ステートメントを実行する代わりに、次のように使用できます。次のような値を持つ準備済みステートメント:

sqlStr := "INSERT INTO test(n1, n2, n3) VALUES "
vals := []interface{}{}

for _, row := range data {
    sqlStr += "(?, ?, ?),"
    vals = append(vals, row["v1"], row["v2"], row["v3"])
}
//trim the last ,
sqlStr = sqlStr[0:len(sqlStr)-1]

stmt, _ := db.Prepare(sqlStr)
res, _ := stmt.Exec(vals...)
ログイン後にコピー

SQL ステートメントを 1 回準備してから、すべての条件を指定して実行します。値を指定すると、複数の準備されたステートメントを作成するオーバーヘッドが最小限に抑えられます。さらに、interface{} を vals の型として使用すると、任意の値の型を挿入できるため、柔軟性が高まり、型変換が回避されます。

このアプローチは、文字列の連結を使用して SQL クエリを構築するよりも効率的で安全です。準備されたステートメントは、SQL インジェクションの脆弱性を防ぎ、複数のデータ行を同時に挿入する際のコードの全体的なパフォーマンスを向上させます。

以上がSQL を使用して Go で複数のデータ行を同時に効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート