問題タブ [sql-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 関数は STRICT 修飾子なしでより高速に実行されますか?
この質問STRICT
に答えているときに、単純な SQL 関数を宣言すると、パフォーマンスが低下することに遭遇しました。
デモンストレーションのために、配列の 2 つの要素を昇順で並べ替える関数の 2 つのバリアントを作成しました。
テスト設定
整数の 10000 のランダムなペアを持つテーブル (
STRICT
修飾子なしの関数:
修飾子付きの関数STRICT
(それ以外は同一):
結果
私はそれぞれ約20回実行し、最高の結果を得ましたEXPLAIN ANALYZE
.
これらは、Debian Squeeze での Postgres 9.0.5 の結果です。8.4でも同様の結果。
すべての NULL 値を使用したテストでは、両方の関数が同じように実行されます: ~37 ミリ秒。
私はいくつかの調査を行い、興味深い落とし穴を見つけました。SQL 関数STRICT を宣言すると、ほとんどの場合、関数のインライン展開が無効になります。詳細については、PostgreSQL オンライン ジャーナル、pgsql-performance メーリング リスト、またはPostgres Wikiを参照してください。
しかし、これがどのように説明できるかはよくわかりません。関数をインライン化しないと、この単純なシナリオでパフォーマンスが低下しますか? インデックスなし、ディスク読み取りなし、ソートなし。関数をインライン化することによって合理化された、繰り返しの関数呼び出しによるオーバーヘッドでしょうか?
再テスト
同じテスト、同じハードウェア、Postgres 9.1 . さらに大きな違い:
同じテスト、新しいハードウェア、Postgres 9.6。ギャップはさらに大きくなりますが、次のようになります。
sql - SQL Server 2008 のストアド プロシージャで ntext 型のデータを操作する方法
SQL Server 2008 のストアド プロシージャで ntext データ型を操作する方法を考えていました。テーブルに ntext 型の列があります。その列からデータをフェッチし、データを解析し、変更してから保存する必要があります。上記のすべてのタスクで、ストアド プロシージャ/関数を 1 つ以上使用する必要があります。そのため、ストアド プロシージャ間でのデータの受け渡しも関係します。
sql - 関数によるフィールドの更新
ID を取得し、テーブルが存在する場合はテーブルから日付を返し、そうでない場合は現在の日付を返す関数があります。
次のクエリは、テーブルから正しい日付を返します。
次のコードは、レコードを正しく更新します (テーブルの値):
しかし、レコードを更新すると、フィールドに現在の日付が表示されます。
ID パラメータが関数に渡されていないようです。
sql-server-2005 - SQLServer機能-重複を防ぐ
SQLServer2005データベースがあります。Table A
ID列と、Id
複数の行にまたがる別の手動列があります。2番目のid
列はの形式で'0000000098'
あり、文字列である必要があります。データ型を変更できません。
Function A
最大ID
列値を取得し、それを1つインクリメントして、文字列としてキャストします。
ストアドプロシージャは新しいIDを取得し、このIDを使用していくつかの挿入を実行します。
更新が発生する前に、2つのクライアントがストアドプロシージャを実行して同じIDを取得しないようにするにはどうすればよいですか?procが処理を完了するまで、読み取りからテーブルaをロックできますか、それともより効率的な方法がありますか?
データ型や構造を変更できれば簡単ですが、できません。
linq - Linq PredicateBuilder
プログラムを実行すると、次のような厄介なエラーが発生しました。
LINQ to EntitiesはメソッドInt32 ToInteger(System.Object)
メソッドを認識しないため、このメソッドをストア式に変換することはできません。
それから、私はSqlFunctions.StringConvert
それを機能させるために使用しましたが、生成されたSQLLINQは評価していませんでした。これはサンプル出力です(1と2ではなく「1」と「2」を比較しています)**
nhibernate - CreateAlias はテーブル値関数への結合を生成します
CreateAliasを拡張して、テーブルだけでなくテーブル値関数を操作する方法はありますか? テーブル値関数をベース テーブルに結合したいのですが、これをCriteriaで行うにはどうすればよいですか?
linq - Linqの組み込みSQL関数をエンティティに呼び出す方法はありますか
LINQ to Entitiesに組み込まれているSQL関数を呼び出す方法があるかどうか知りたいですか?'CAST'
、など'ISNULL'
。インターネットで検索し、LINQ to Entitiesでユーザー定義関数を呼び出す方法を知っていますが、組み込み関数を呼び出す方法がわかりません。確かに、一部の組み込み関数は代わりにCLRメソッドを使用できますが、それらを直接呼び出す方法があれば幸いです。
sql - SQL ストアド プロシージャから関数を呼び出す方法
ストアド プロシージャで収集された関数があります。関数はテーブルを返し、別のテーブルに入力する必要があります。たぶん、この質問は少し素朴に思えるかもしれませんが、私はT-SQLの新しい人です。前もって感謝します。
sql-server - 現在の行番号を SQL Server テーブルに挿入する
に次の表がありますSQL Server
。
新しい行が追加されるたびに、列にinsert
電流を流す必要があります。以下を使用しようとしましたが、期待どおりに機能しません。row number
guid
function
sql - 関数内に含まれるSelectステートメントは、クライアントにデータを返すことができません
T-SQLの専門家、次のプロシージャがこのエラーを返す原因は何ですか?「関数に含まれるSelectステートメントはクライアントにデータを返すことができません。」?
到着時刻から連結された文字列を含むスカラーを返そうとしているだけです。selectステートメントをどこに返しているのかわかりません。