2012-02-21 18 views
2

Compact Frameworkアプリケーション(SQLServer Compact Editionデータベース)でデータベースのパフォーマンスに少し問題があります。C#.Net CF SqlCeDataAdapter DataSet塗りつぶしが遅い

私は何をすることです:

  1. クエリSqlCeDataAdapterといくつかのデータのためのデータベースは、お返しに私はその後、記入する方法を記入SqlCeDataAdapterを使用したデータ sqlCeDataAdapter = new SqlCeDataAdapter(query, Sql_Connection);

  2. と6行を取得データを含むデータセット sqlCeDataAdapter.Fill(resultSet);

  3. ループデータセット..

私はデータの300行を持っている場合は、全体の機能を実行するために秒未満かかりますが、私は、データの〜10の000行を持っている場合、それは程度かかります6〜7秒(それは私のアプリケーションではあまりにも多い)。

どちらの場合も、それはまったく同じ行を返しますが、fillメソッドは、それを遅く...

データベースは、fillメソッドが呼び出されたときに最初に照会またはされていますか?

行数を減らす以外に何かできますか?データベースが、それはまだ同じ時間がかかります0行を返すように、私は、クエリを変更した場合

も...

エドモンド

+1

はあなたの実際のコードを投稿/エドモンド...のような実際のクエリを見て何 –

+0

?ターゲット表の索引付けは正しく行われていますか? 7秒は私たちが見ていない何か間違っていることを示しています(私はDataSetを放棄するErikEJの提案に同意します)。 – ctacke

答えて

2

敬具は、あなたが.NET CFにDataSetを使用しないよう提案しますあまりにも多くのメモリを消費し、本質的にデータベースをRAMにコピーするためです。あなたはデータバインディングが必要な場合、私は、テーブルが全くインデックス化されていなかったトラブルを発見した

...

それは仮定した...そうちょうどのSqlCeDataReader

+0

こんにちはErik!あなたの答えをありがとう...まあ私もSqlCeDataReaderしようとしていますが、それはまだ(6-7)遅いです。唯一良いのは、問合せが行を戻さずに遅延がない場合です。// Edmund –

+1

.Seekおよび.TableDirectを使用して、問合せプロセッサをバイパスして最大速度を取得することも検討できます – ErikEJ

1

おかげであなたの助けのためにすべてを使用し、SqlCeResultSetを使用しますデータベースの作成者はそれを見逃していました。

すべてが本物で速くなりました(また、データセットの代わりにSqlCeDataReaderに変更されました)。再び

、感謝ErikEJとctacke ...

関連する問題