私は単純なDBクラスを作成するためにPDOクラスを拡張し、データベースに対して実行されるすべてのクエリに対してprepare + executeを使用します。パラメータを持たない(例えば、SELECT * FROMテーブル)。PDO :: queryとPDOStatement :: execute(PHPとMySQL)
質問は、準備/実行の代わりに、パラメータを持たない単純なクエリに対して実際にPDO :: queryを使用するとパフォーマンスが向上するのでしょうか?
私は単純なDBクラスを作成するためにPDOクラスを拡張し、データベースに対して実行されるすべてのクエリに対してprepare + executeを使用します。パラメータを持たない(例えば、SELECT * FROMテーブル)。PDO :: queryとPDOStatement :: execute(PHPとMySQL)
質問は、準備/実行の代わりに、パラメータを持たない単純なクエリに対して実際にPDO :: queryを使用するとパフォーマンスが向上するのでしょうか?
PDO::prepare
を呼び出すと、サーバーはそのクエリのクエリプランとメタ情報を作成しなければならないため、PDO::execute
を使用すると、指定されたパラメータをバインドするオーバーヘッドが発生します。したがって、このオーバーヘッドを節約してパフォーマンスを向上させるには、パラメータなしのクエリに対してPDO::query
を使用できます。
ただし、アプリケーションの規模とサイズ、およびサーバー/ホスト構成(共有/プライベート)によっては、パフォーマンスの向上が全く見られない場合もあります。
PHPで2つの異なる方法を実行することとの間には、大きな違いがあります。それぞれの方法が持っている価値を評価し、テストケースを作成して、それがあなたのために何かを行う価値があるかどうかを確認する必要があります。
@summea実際には両方とも 'PDOStatement'を返します。あなたは' PDO :: exec'を考えていますが、ここで問題にはなりません。 – pmm
良い点;私はいつもそれらを混ぜる... – summea