次のような準備済みステートメントがあるとします。
SELECT my_func($1::text, $2::int)
この呼び出しでステートメントを準備し、準備されたステートメントを介して呼び出しを行うと、速度が向上しますか?
次のような準備済みステートメントがあるとします。
SELECT my_func($1::text, $2::int)
この呼び出しでステートメントを準備し、準備されたステートメントを介して呼び出しを行うと、速度が向上しますか?
ここでドキュメントを引用させてください:
プリペアドステートメントは、単一のセッションを使用して多数の同様のステートメントを実行する場合に、パフォーマンス上の最大の利点があります。パフォーマンスの違いは、ステートメントの計画や書き換えが複雑な場合、たとえば、クエリに多数のテーブルの結合が含まれる場合や、複数のルールの適用が必要な場合に特に重要になります。ステートメントの計画と書き換えが比較的簡単であるが、実行に比較的費用がかかる場合、プリペアドステートメントのパフォーマンス上の利点はあまり目立たなくなります。
強調するのは私のものです。PREPARE
どの条件がメリットをもたらすかを明確に示していると思います。
それでも、現在すべての言語がステートメントを準備するためのネイティブな方法(PHPなど)を提供しているため、全体的な機械は舞台裏で実行されます。
短くするには:
PREPARE
、パフォーマンス上の理由から、任意の手段(またはプラットフォームの機能)を使用して準備してください。