私はPostgresqlを使用しています。関数の実行にかかる時間をテストしたいと思います。この関数は数ミリ秒しかかからないので、正確な数値を取得するために、何千回もループで呼び出したいと思います。
MySQLには、これを行うためのBENCHMARK()関数があります。同等のものはありますか、それともこれを行うためにループ付きのプロシージャを作成する必要がありますか?
私はPostgresqlを使用しています。関数の実行にかかる時間をテストしたいと思います。この関数は数ミリ秒しかかからないので、正確な数値を取得するために、何千回もループで呼び出したいと思います。
MySQLには、これを行うためのBENCHMARK()関数があります。同等のものはありますか、それともこれを行うためにループ付きのプロシージャを作成する必要がありますか?
PostgreSQL では、通常、次のようにしてこれを行いgenerate_seriesます。
SELECT my_function()
FROM generate_series(1,5000);
また
SELECT (SELECT my_query ....)
FROM generate_series(1,5000);
後者の場合OFFSET 0、サブクエリに追加するか、SQL 関数でラップしてSTRICT、クエリ プランナーが共通の条件やサブ句を引き出したり、そうでなければ巧妙になったりするのを防ぐことができます。
\timingタイミングは、psql のコマンド、 with SET log_duration = on、または withで取得できますがEXPLAIN (ANALYZE, BUFFERS)、いずれも微妙に異なります。ドキュメントを参照してください。簡単に言えば\timing、クライアントへの往復と値の転送を含む時間を測定します。log_durationサーバー側の実行時間を測定します。EXPLAIN (ANALYZE, BUFFERS)ステートメントの実行の詳細を測定しますが、タイミングのオーバーヘッドが追加されるため、少し遅くなる可能性があります。
ループを使用してプロシージャを記述します。5分以上かかることはありません。