私はSQL Server CE 3.5データベースを持っています。私は次のコードを実行します:SQL Server CEのパフォーマンスは、テーブルから選択すると7000レコードで8秒かかります
private void Load(string sql)
{
if (connection.State != ConnectionState.Open)
connection.Open();
SqlCeDataAdapter sqlCeDataAdapter = new SqlCeDataAdapter(sql, connection);
Stopwatch watch = new Stopwatch();
DataSet dataSet = new DataSet();
try
{
Cursor.Current = Cursors.WaitCursor;
watch.Start();
sqlCeDataAdapter.Fill(dataSet, "items");
sqlCeDataAdapter.Dispose();
var myBind = new BindingSource(dataSet, "items");
grid.DataSource = myBind;
}
finally
{
watch.Stop();
Cursor.Current = Cursors.Default;
MessageBox.Show(watch.ElapsedMilliseconds.ToString());
}
}
Load ("select a1, a2 from table");
これは長いですか、それとも高速に読み込むべきですか?
この選択を高速化するにはどうすればよいですか?
私が使用している場合、他のテーブルと結合、時間が飛躍的に成長していく...
編集:私は次の新しいバージョンのコードを変更するが、それでも7.5秒ている
。 ...
private void Load2 (string sql)
{
if (connection.State != System.Data.ConnectionState.Open)
{
connection.Open();
}
using (SqlCeCommand command = new SqlCeCommand(sql, connection))
{
Stopwatch watch = new Stopwatch();
Cursor.Current = Cursors.WaitCursor;
watch.Start();
using (SqlCeDataReader reader = command.ExecuteReader())
{
DataSet dataSet = new DataSet();
dataSet.Tables.Add("items");
dataSet.Tables["items"].Columns.Add("s1");
dataSet.Tables["items"].Columns.Add("s2");
while (reader.Read())
{
string s1 = reader.GetString(0);
string s2 = reader.GetString(1);
dataSet.Tables["items"].Rows.Add(s1, s2);
}
watch.Stop();
Cursor.Current = Cursors.Default;
MessageBox.Show(watch.ElapsedMilliseconds.ToString());
BindingSource binding = new BindingSource(dataSet, "items");
grid.DataSource = binding;
}
}
}
質問を投稿する – Diego
これは、テーブルa – John
@ aから編集a.column1、a.column2を編集することです。また、SQL CEを使用してからディスクIOのような他の制限要因があることを理解する必要があります。任意の種類の最適化またはロード・バランシングによってSQLトランザクションを処理するサーバーを持つことができます。 –