オンラインタスクで SELECT TOP 10 のように件数指定が可能か?
SQLのSELECTには SELECT TOP 10 のように抽出件数?表示件数?
の上限を決められると思いますが
Magicのオンラインタスクで
SQLコマンドではなく
普通のメインソース指定で、抽出件数を打ち切る事は可能でしょうか?
-
DbViewRowIdx(0)を代入した変数に範囲式を入れてタスク特性のビュー事前読み込み:YESでできるかとおもいますが、再表示したりしたときの動きがちょっと読めません。
メインソース指定だけだと、項目に連番とかがない速度的に厳しいのではないでしょうか
SQLSERVERの環境がないので試したことないんですが、
インデックスのヒント句にTOP 10 とか入れてしまうとかならなりそうな気もしますが
昔oracleでヒント句欄に 10 * といれて最初の項目が10倍になるという
いたずらを仕掛けたことがあります
追記 07.12 11:00
わかりづらかったので一応補足を、ヒント句は本来オプティマイザに適正なインデックスの使用や算出方法を指示したりするものですけど、
Magicのデータリポジトリのインデックス特性のヒント句欄は、SQLで言うと、"SELECT **ここ** 項目 FROM~ "のところに文字列を埋め込むだけなので、ここに 10 * とかを入れて
"SELECT 10 * 項目 FROM~ "という
SQLインジェクション的な使い方ができたよって意味です。
-
vg様 レスありがとうございます。
DbViewRowIdx(0) は未使用ですが、興味はあります。
SQL Serverでグルーピング集計した時の「順位」は
たまに使いますが、構文を覚えていないので使う時に
検索かけております。インデックスのヒント句というのは、何の事か知りませんでした。
使用して欲しいインデックスを明示できるのですね。
それだけではないのでしょうけど。 -
タスクの範囲式に「DbViewRowIdx(0)<=n」と入れたら、簡単に実現されましたよ。
-
どうもありがとうございました。試してみます。
-
vg様 追記 ありがとうございます。
何か役に立つ場面があるのかもしれないですね。
サインインしてコメントを残してください。
コメント
5件のコメント