Golang のデータベース/SQL パッケージには、SQL ステートメントを実行するための 2 つのメソッドが用意されています。行を返さない操作 (挿入、削除、更新など) と、行を返さない操作の db.Query() do.
ドキュメントでは、クエリ以外の操作に db.Exec() を使用することを推奨していますが、多くの開発者は、そもそもなぜプリペアド ステートメントをわざわざ使用する必要があるのかと疑問に思っています。
db.Query() が内部でプリペアドステートメントを作成しているにもかかわらず、db.Exec() は引き続き提供します利点:
db.Query() によるステートメントの自動準備に関するドキュメントの主張は、使用されるデータベース ドライバーによって異なる場合があります。ただし、プリペアド ステートメントを作成して手動で再利用すると、頻繁に実行されるクエリのパフォーマンスを向上させることができます。
PostgreSQL ドキュメントでは、プリペアド ステートメントがクエリの複数回の解析と計画の必要性を減らしてパフォーマンスを最適化する方法について説明しています。ステートメントを 1 回準備し、異なるパラメーターを使用して複数回実行することで、これらのコストのかかる操作をスキップできます。
要約すると、db.Exec() は、ステートメントを手動で準備してキャッシュする非クエリ操作に特有の利点を提供します。頻繁なクエリのパフォーマンスを最適化できます。
以上がGo のデータベース インタラクションで `db.Exec()` とプリペアド ステートメントを使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。