問題タブ [ansi-sql-92]

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.

0 投票する
2 に答える
409 参照

c# - 大きな OpenEdge テーブル全体のコピー

大規模な OpenEdge テーブル (1 億行以上) を、できればプログラムで (c# で)、SSIS などの ETL ツールやテキスト ファイル抽出などのステージング形式の外部で読み取る最速の方法を見つける必要があります。

現在、ODBC (ドライバー: Progress OpenEdge 11.5) を使用して、OFFSET および FETCH 修飾子を使用してバッチで OpenEdge 11.5 テーブルをクエリしています。

と を使用してシステム DSN を介してクエリを実行していFetchArraySize: 25ますQueryTimeout: -1。そして、SQLのみのアクセス用に設定されたOpenEdgeサーバーグループに接続していますmessage buffer size: 1024.

パフォーマンスが悪い (15 分ごとに約 100 万レコード) ことに気付きました。OFFSET FETCH 修飾子を使用すると、テーブルを進めていくとパフォーマンスが低下するだけだと思います。

私の質問は、クエリのパフォーマンスを調整するために採用できる方法や操作できる設定はありますか?

  1. たとえば、SQL クエリを作成するためのより良い方法はありますか? たとえば、ROWID ではなく、インデックス内の列で並べ替える必要がありますか?
  2. SQL Server グループのメッセージ バッファ サイズを大きくする必要がありますか?

または、テーブルからデータを読み取る別の方法を検討する必要がありますか?


注: 各バッチは、その後sqlbulkcopySQL Server テーブルに変換されます

0 投票する
2 に答える
25 参照

sql - max(year) で行を選択し、名前でグループ化しますが、結果セットには他の値も含めます

テーブル内の特定の選択に問題があります。では、名前でグループ化されたすべての人を、最大の年で検索したいと考えています。ただし、後で結合するために、結果セットに他の列も必要です。

さらに、id は順序付けされていないため、集計関数では使用できません。クエリはデータベースに依存しない必要があります。

ここに表があります:

ここに画像の説明を入力

必要な結果は次のとおりです。

ここに画像の説明を入力