人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Access等で使われるJET SQLについての質問です。

Mysqlなどで利用できる limit句が、JET SQLでは利用できないと下記ページに書いており、困っております。

http://office.microsoft.com/ja-jp/access/HA012314361041.aspx

何かlimit句の変わりに使えるようなものはあるでしょうか?


※変わりにTOPパラメータを使うという考えは、同一の値がある場合、データ量が変化するので使えません。

------------------------------------------------------------------------

現在、mdbファイルを、別のプログラムから現在操作しています。(.NET C#)

JETに頼らず、一度データセットに全て取り込んで、プログラム側で処理しようかなとも思うのですが、物凄く重くなりそうで考え中です。
(最大で4万レコード程がフィールド数10個の1テーブルに入ります)

何かいいアイデアがあれば教えてください。

●質問者: hayama5
●カテゴリ:コンピュータ
✍キーワード:.NET access C# JET MDB
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● freemann
●27ポイント

いい案とは言えないですが、OleDBDataReaderを使って、希望する行数まで読み飛ばして、欲しい行の情報のみをDataSetなりDataTableに保存してはどうですか?

当然のことながら後ろの行数のデータほどパフォーマンスは悪くなりますが・・・


2 ● F-15X
●27ポイント

SQLのTOP句と ADO.NETのFill メソッドを併用してはいかがでしょうか?

C#

int currentIndex = 0;
int pageSize = 5;

string orderSQL = "SELECT TOP " + pageSize + 
 " * FROM Orders ORDER BY OrderID";

// Assumes that connection is a valid SqlConnection object.
SqlDataAdapter adapter = new SqlDataAdapter(orderSQL, connection);

DataSet dataSet = new DataSet();
adapter.Fill(dataSet, currentIndex, pageSize, "Orders");

参考

クエリ結果のページング

◎質問者からの返答

リンク先興味深いです。早速呼んでみます。


3 ● KUROX
●26ポイント

ADOXとか使うんですかね?

>最大で4万レコード程がフィールド数10個の1テーブルに入ります

SELECTして出来たレコードセットを1レコードずつ処理する

とかなら、普通に可能だと思います。

郵便番号辞書とかは10万件だとおもうので、それに比べても

大きいとは思えないので、心配することはないと思いますが・・。

ORACLEでもlimit句は使えないです。

◎質問者からの返答

ADO.NETを利用します。4万件読み込むと、メモリはどれぐらい消費するのでしょうか…

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ