ListViewを高速に表示するには? への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 hirosi  (社会人) 投稿日時 2009/10/11 02:49:43
ヴァンさん、回答有り難う御座います。

>ListViewの表示に時間がかかっているのか、SQLに時間がかかっているのか?
>どちらですか?
ご指摘の点ですが、ListViewの表示に時間が掛かっています。

DataGirdViewを勉強してみます。
投稿者 ヴァン  (社会人) 投稿日時 2009/10/10 03:02:49
こんにちは。

ListViewの表示に時間がかかっているのか、SQLに時間がかかっているのか?
どちらですか?

または、ListViewを止めてDataGirdViewにしてみてはどうですか?
投稿者 hirosi  (社会人) 投稿日時 2009/10/10 01:42:15
お世話になっております。

データベースの商品マスタ5,600件ほどを、リストビューに表示する商品照会プログラムを作成しています。抽出件数千件以下と少ない時は数秒と早いのですが、5,600件全部を表示する場合は40秒程掛ってしまいます。これを、数秒で表示出来ないものかと悩んでおります。
下に、現在の処理を記述しました。
<プログラム記述例>
With LstVew
   .Refresh()
   .Items.Clear()              'ListViewコントロールを初期化
    .BeginUpdate()
End With
 データベースの抽出 … 略 
SqlReader = SqlCmd.ExecuteReader()      'データを取得する
Do While (SqlReader.Read)
    商品CD = Trim(SqlReader("商品CD"))
    商品名カナ = Trim(SqlReader("商品名カナ"))
    商品名漢字 = Trim(SqlReader("商品名漢字"))
    希望小売価格 = Trim(SqlReader("希望小売価格"))
    登録年月日 = Trim(SqlReader("登録年月日"))
    Dim Item() As String = {商品CD, 商品名カナ, 商品名漢字, 希望小売価格, 登録年月日}
    LstVew.Items.Add(New ListViewItem(Item))    'リストビューに追加
Loop
SqlReader.Close()
LstVew.EndUpdate()
'-----  リストビューの列幅を項目の長さで自動調節(-2)する  -----------------------------
Dim ch As ColumnHeader
For Each ch In LstVew.Columns
    ch.Width = -2
Next ch
こんな感じです。
何方かご教授をお願いします。