C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C# Access DataBaseインデックス付与と検索 


(過去ログ 137 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■80407 / inTopicNo.1)  C# Access DataBaseインデックス付与と検索 
  
□投稿者/ XY (1回)-(2016/07/15(Fri) 10:44:10)

分類:[C#] 


いつもお世話になります。
環境
windows 8.1
.Net Framework 3.5
Visual Studio 2010 

AccessDBにアクセスをして、sqlで抽出した件数と検索で引っかかったデータを取得したいです。
Accsessにあるデータは

tableA
IDNO CYCLE BTYPE TIMESTAMP BinaryData の4カラムです。

まず最初に検索して、抽出された全体の件数を取得したいと思ってます。
その上でバイナリデータの読み込みがしたいです。

OleDbConnection conn = new OleDbConnection();
OleDbCommand comm = new OleDbCommand();
comm.Connection = conn;
comm.CommandText = "select count(*) from karte where karte.CYCLE = (SELECT MAX(karte_1.CYCLE) FROM karte AS karte_1 WHERE karte.IDNO = karte_1.IDNO)";
comm.Connection = conn;
OleDbDataReader reader = comm.ExecuteReader();
-個々の部分で表示件数を取得したいです。-

while (reader.Read()) {
}

このまま実行するとsql発行時に相当な時間がかかります。件数が多いため。
インデックスを付与すればいいのですが、そのやり方がわかりません。
まずはインデックスを付与してセレクト文を流して、その件数を取得できればと思っております。
件数が多いのでできる限り早い検索ができるとうれしいです。
お手数をお掛けしますが、よろしくお願いします。

引用返信 編集キー/
■80408 / inTopicNo.2)  Re[1]: C# Access DataBaseインデックス付与と検索 
□投稿者/ XY (2回)-(2016/07/15(Fri) 10:49:11)
SQLがおかしかったです。

OleDbConnection conn = new OleDbConnection();
OleDbCommand comm = new OleDbCommand();
comm.Connection = conn;
comm.CommandText = "select count(*) from tableA where tableA.CYCLE = (SELECT MAX(tableA_1.CYCLE) FROM tableA AS tableA_1 WHERE tableA.IDNO = tableA_1.IDNO)";
comm.Connection = conn;
OleDbDataReader reader = comm.ExecuteReader();
-個々の部分で表示件数を取得したいです。-

while (reader.Read()) {
}
になります。
引用返信 編集キー/
■80410 / inTopicNo.3)  Re[2]: C# Access DataBaseインデックス付与と検索 
□投稿者/ しま (115回)-(2016/07/15(Fri) 13:12:45)
No80408 (XY さん) に返信
> SQLがおかしかったです。
>
> comm.CommandText = "select count(*) from tableA where tableA.CYCLE = (SELECT MAX(tableA_1.CYCLE) FROM tableA AS tableA_1 WHERE tableA.IDNO = tableA_1.IDNO)";
> comm.Connection = conn;
> OleDbDataReader reader = comm.ExecuteReader();
> -個々の部分で表示件数を取得したいです。-
>
> while (reader.Read()) {
> }
> になります。

access のバージョンは何ですか?
ソースを載せる場合は投稿モードは図表モードを用いて下さい。

sql 文で実行したいことを言葉で説明して欲しいです。
おそらくこのままの sql 文ではインデックスは効かないと思われるからです。
次に、取得しているのは count(*) ですから、最大一件しか得られませんが、
>-個々の部分で表示件数を取得したい
ということと辻褄が合わないように受取りました。
提示された sql 文で複数件の結果が取得なさりたいとう意図なのでしょうか?

又、バイナリーデーターを読取る部分の記述がないのは何故でしょうか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -