11

私たちはまだ Postgres を使い始めたばかりで、Microsoft Sql Server から来ました。

今、いくつかのストアド プロシージャを書きたいと思っています。pl/pgsql で動作するよりも複雑なものを取得するのに苦労した後hello world、約 15 分で同じクエリが動作するようになったため、新しい言語を学習する場合は Python を学習する方がよいと判断しました。 (注意してください、実際にPythonを知っている人は誰もいません)。

pl/psqlと比較して、いくつか質問があります。

  1. pl/Pythonu は pl/pgsql より遅いですか?
  2. それを使用して適切なストアド プロシージャを作成する方法について、「適切な」リファレンスはありますか? Postgres のドキュメントの 5 つの短いページだけでは、十分な情報が得られません。
  3. クエリの準備はどうですか?常に使用する必要がありますか?
  4. 多くのクエリ プランに SD および GD アレイを使用すると、いっぱいになりすぎたり、サーバーに悪影響を及ぼしたりすることはありませんか? いっぱいになった場合、古い値は自動的に削除されますか?
  5. 信頼できる言語になる見込みはありますか?

また、ストアド プロシージャの使用は非常に軽いものです。現在は 4 つしかありませんが、SQL Server 固有の構文 (ストアド プロシージャ以外の Postgres では使用できない変数など) から少しのコードを変換しようとしています。

4

1 に答える 1

9
  1. 実行している操作によって異なります。
  2. まあ、それを一般的な Python ドキュメントと組み合わせると、それはあなたが持っているものについてです。
  3. いいえ、繰り返しますが、何をしているかによって異なります。クエリを 1 回だけ実行する場合は、個別に準備しても意味がありません。
  4. 永続的な接続を使用している場合は、可能性があります。ただし、接続が閉じられるたびにクリアされます。
  5. ありそうもない。サンドボックス化は Python で壊れており、私の知る限り、誰もそれを修正することに本当に興味を持っていません。pl/parrot があれば、python-on-parrot が最も実行可能な方法かもしれないと誰かが言っているのを聞きました (これはまだありません)。

ただし、ストアド プロシージャがデータベースの作業を行う場合は、pl/pgsql を使用してください。外部ライブラリとの通信など、データベース以外のことを行う場合にのみ、pl/python を使用してください。

于 2010-01-26T19:48:55.473 に答える