2

次のような単純な非常に単純なselectステートメントがあります。

SELECT * FROM vContacts 

vContacts は、tblContacts テーブルから作成されたビューで、218 レコードしかありません。
前述の選択クエリを使用すると、全体で 9.89 秒かかります! DataGridView を埋めるために! 名前は英語ではなくペルシャ語である必要があり、すべてのフィールドが存在し、他に何もないため、フォームで
を使用Viewします)。built-in 内で view ステートメントを実行しようとすると、驚くほど高速です。しかし、私のWindowsフォームでは10秒かかります!!DataGridview
Visual Studios 2010SQL Designer

より正確には :

これは View ステートメントです:

SELECT ID, Name, Tel, Mobile, Address, Description
FROM  dbo.tblTel

このメソッドを使用して、テーブル全体を取得します

public static DataTable GetTable(string tableName, string conncetionString, bool structureOnly = false)
        {
            DataTable table = new DataTable();
            string query = structureOnly ? string.Format("SELECT * FROM {0} WHERE 1=0", tableName) : string.Format("SELECT * FROM {0} ", tableName);
            SqlConnection connection = new SqlConnection(conncetionString);
            connection.Open();
            SqlCommand command = new SqlCommand(query, connection);
            SqlDataAdapter reader = new SqlDataAdapter(command);
            reader.Fill(table);
            connection.Close();
            return table;
        }

次のように使用します。

dataGridView.DataSource = DBAPI.GetTable(vContacts,DBAPI.ConnectionString);
4

2 に答える 2

1

問題が見つかりました。DataGridViewコンポーネントが原因でした。
DotnetBars DataGridViewXこの点でいくつかのひどい問題があります。通常のを使用しようとしたとき、DataGridViewすべてのレコードを表示するのに1秒未満(実際には数ミリ秒)DotnetBar's DataGridViewXかかりましたが、218レコードのみを表示するのに10秒かかりました!!! 経験則として、サード パーティ製のコントロール、特に DotnetBars を使用するべきではありません。

于 2013-03-03T18:34:02.863 に答える
1

SQL デザイナでクエリを実行すると、最初の行が計算されるとすぐに表示されますが、クエリ自体が完了するまでに数時間かかる場合があります。

C# コードを実行すると、クエリが終了するまでグリッドは再描画されません (つまり、値が表示されます)。

組み込みの SQL デザイナーについてはよくわかりませんが、SSMS でクエリを実行すると、右下隅に合計実行時間が表示されます。また、タイマーがまだカウントアップしており、[キャンセル] ボタン (赤い点が付いている) がアクティブになっている場合でも、結果が表示されます。

于 2013-03-03T13:29:17.807 に答える