データベースからの抽出を早くする方法
- 題名: データベースからの抽出を早くする方法
- 著者: エツ
- 日時: 2006/09/16 19:25:55
- ID: 17584
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: データベースからの抽出を早くする方法
- 著者: こど。
- 日時: 2006/09/16 22:31:41
- ID: 17585
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: データベースからの抽出を早くする方法
- 著者: エツ
- 日時: 2006/09/16 23:30:16
- ID: 17586
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: データベースからの抽出を早くする方法
- 著者: R・田中一郎
- 日時: 2006/09/18 11:29:08
- ID: 17589
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: データベースからの抽出を早くする方法
- 著者: エツ
- 日時: 2006/09/18 14:36:22
- ID: 17592
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: データベースからの抽出を早くする方法
- 著者: エツ
- 日時: 2006/09/18 20:13:13
- ID: 17596
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
こんにちは エツです。 いつもお世話になります。
データベースの構築をしますので構築方針についてアドバイスをお願いします。
xp VC#2005 Express Edition、SQLServer2005 Express Editionの環境です。
お聞きしたいのは、データベースからの抽出速度を速める為のデータベース及びテーブル、その他関連部分の仕様をどのようにするかです。
テーブルは10個位あり、抽出時にテーブル間の参照もあります。テーブルの項目数は多いもので140項目、少ないもので10項目です。テーブルの項目は変更できないです。各テーブルには20万行以上のデータがあります。抽出されるデータは少なく1回の抽出で100行程度です。
抽出したデータは単独のTable、DataSetのTable、DataView、List のいずれかの速度が早いのに格納したいです。表示は抽出したデータを加工して、DataGrid に表示します。
抽出内容は各テーブルの項目の 年月、日時、大分類、中分類、小分類、製作者 などの特定の項目で抽出しlます。
(例)
1. 2006年1月1日〜2006年1月31日の全てのデータ
2. 製作者 A で2006年1月10日〜2006年1月20日 範囲 で大分類 ガラスのデータ抽出 などです。
現状は
1.年月、日時、大分類、中分類、小分類、製作者 を PRIMARY KEY にする。
2.データベースの更新は 殆どが挿入データの為 Insert Cmd.ExecuteNonQuery(); を行い PRIMARY KEY 違反があれば Update Cmd.ExecuteNonQuery(); を行います。
3.読み出しはSqlDataReader dr = Cmd.ExecuteReader(); で行い 結果をデータセットのTable に格納しています。SQL文はStringBuilderで毎回作成しています。パラメータは使用していません。ローカルなので、セキュリティは問題にしていません。
データベースの更新は1週間に1回なので、気になりませんが、抽出は煩雑に行う為速度が大変気になります。データベースからの抽出が遅く、その後のデータ加工、表示の速度はOKです。データベース全体をパソコンのメモリに取り込むのは、メモリ不足で無理です。
少しでも抽出を早くする方法があれば試してみたいのでアドバイスをお願いします。