Ich habe eine SQL Server CE 3.5 Datenbank. Ich führe den folgenden Code aus:
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");
Ist das lange für SQL Server CE, oder sollte es schneller geladen werden?
Was kann ich tun, um dieses Select schneller zu machen?
Wenn ich Joins mit anderen Tabellen verwende, steigt die Zeit dramatisch an ...
EDIT:
Ich habe den Code für eine folgende neue Version geändert, aber immer noch 7,5 s. ...
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;
}
}
}