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 サイトの他の関連記事を参照してください。