問題タブ [rbar]
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.
sql - SQL Server : カーソルを使用せずに各行に副作用のあるストアド プロシージャを呼び出す
これは、カーソルを使用せずに行ごとに SQL Call Stored Procedure と同じであると言う前に、私の質問を明確にさせてください。
ストアド プロシージャには副作用があります。実際、各呼び出しの結果がその後の処理に影響するため、これらの副作用がすべてです。
次のように考えてみてください。テーブルにはルール定義が含まれており、proc はそれらのルールを文字通り RBAR として実行し、別のテーブルに変更を加えます。
これらの条件下では、セット操作がどのように可能かわかりません.CROSS APPLYはおそらく副作用のために使用できませんが、実際にはルールテーブルに結果を結合していないため、必要ありません.
ソリューションが本当に RBAR である場合でも、CURSOR を使用しないようにする必要がありますか? READ TOP 1 WHERE Key > @Key で WHILE を使用するのがより良い解決策ですか? なんで?
検索すればするほど、fast_forward read_only カーソルが最も簡単で最速のソリューションであるという結論に達しました。
sql-server-2008 - フィールドに基づいて読み取り可能な一意のキーを作成する
Webguys は、製品の名前に基づいて一意の URL を望んでいます。同じ名前の製品が他にもある場合は、名前の後に番号を追加します。
our.dom/red-sock
our.dom/red-sock-1
すべての製品に製品 ID や別の番号を付ける必要はありません。つまり、
our.dom/red-sock-123481354
これを seourl と呼ぶフィールドに保存します。
新しい製品を作成するときにそれを取り上げました。トリガーはソウルを追加しようとします。既に存在する場合は、一意の値が見つかるまで番号を増やします。
しかし、テーブル全体に新しいソウルを与える必要があります。もし私がちょうど
必ず衝突が発生し、操作がロールバックされます。機能する更新をコミットし、残りを変更しないようにするステートメントを作成する方法はありますか?
それとも、RBAR、Row By Agonizing Row 操作をループで実行する必要がありますか?
vb.net - VB.Net の Excel スプレッドシートへの大きなデータ テーブルの高速エクスポート
ここで興味深い難問があります。大規模なデータテーブル (SQL から入力された 35,000 行) をユーザー向けの Excel スプレッドシートにすばやく (1 分未満で) エクスポートするにはどうすればよいでしょうか。エクスポートを処理できるコードが用意されています。コード自体に「問題」はありませんが、ファイル全体をエクスポートするのに 4 分かかると腹立たしいほど遅くなります (ユーザーの RAM が少ない場合や、より多くのメモリを実行している場合は、さらに長くなることがあります)。彼らのシステム)。悲しいことに、これは、以前の方法を使用して 10 分以上かかっていたものよりも改善されています。簡単に言えば、サードパーティのコンポーネントを使用せずに、これをもっと速くすることはできますか? もしそうなら、どのように?私のコードは次のとおりです。スローダウンは、各行が書き込まれるメッセージボックス 6 と 7 の間で発生します。ご覧いただきありがとうございます。
sql-server - SQL の現在のレコードの日付フィールドと同じ日または前の累積日次合計
重要: これを SQL Server 2000 互換にする必要があります。
累積合計が必要ですが、現在の日付フィールドに基づいて、現在使用しているような更新クエリは機能しますが、非常に遅いです (醜い暗黙の RBAR 三角結合):
合計を実行するためにカーソル メソッドを使用してみましたが、RBAR の問題を修正できません。日付の比較がまだ存在し、それでも非常に遅いことがわかります。
したがって、この累積合計の問題は、そこでの日付の比較であり、クエリが非常に遅くなっていることです (10 分間実行した後にコードを停止し、この Update カーソルの実行に 3 秒しかかからないことにコメントしました)、私が持っている行数テストされたのは 28K です。レコード数が増えると、所要時間が指数関数的に増加しているように見えます。そのため、ここで RBAR が実行されていることが問題であると想定しています (「Row-By-Agonizing-Row」を意味します)。
編集:いくつかのテストの後、日付だけが問題ではないように見えます.カーソル内の変数を合計するだけで、この実行中の合計を作成する方法はありますか?
EDIT2:現在、最初の更新(4つのフィールドと日付に基づく1日の合計)を作成する方法を探していますが、より速く、カーソル内にロジックを手動で追加することに近づきましたが、カーソル大きくなりすぎて管理が困難になったので、この場合に最適な (より高速な) ランニング トータル手法はどれでしょうか? そして、ここでそのテクニックをどのように実装しますか? これは単純な現在の合計ではありません。これらのフィールドのいずれかが変更された場合はカットする必要があります。フィールドのEsSaldoAnterior
変更は 0 または -1 のみです。このフィールドが 0 の場合、更新は外側のテーブルにのみ影響しますが、このフィールドが -1 の場合でも、内側の現在の合計は合計されます。 EsSaldoAnterior
「以前の金額」のようなものを意味し、実行中の合計がゼロから開始されるべきではないことを意味します。最初にこれらの金額の合計を開始する必要があります (存在する場合)。これは、ORDER BY を使用する場合の順序です。
sql - rbarを実行せずに、いくつかの場所から十分なアイテムを選択します
各アイテム番号が複数の場所にある倉庫があります。どこから選ぶかの優先順位があります。
優先順位は場所の名前の関数です。簡単にするために、次のようにしましょう。order by loc asc
注文があります
ピックリストを 3 番目のテーブルに入力します。
単純に結合すると、item_1 の 3 つの行が得られます
RBARではなく、Row By Agonizing Rowループで単一のSQLステートメントで実行したいと思います。
私はMssql 2008を使用しています