我比较了从数据库表中获取一些相当大的数据的两个查询.对于查询,我使用了
Linq To sql,而另一个我通过ADO.NET使用passthrough sql.
我知道Linq To sql必须在幕后做很多工作,但实际上它在做什么?这两个查询获取相同数量的数据,但Linq To SQL查询速度慢了5秒以上,并且使用了150mb以上的RAM!
这是我的测试代码:
使用Linq To sql:
public void MakeList() { int start = Environment.TickCount; var document = from d in _dm.tDokuments select d; List<tDokument> documentList = document.ToList(); int end = Environment.TickCount; GridView1.DataSource = documentList; GridView1.DataBind(); Label1.Text = (end - start).ToString(); }
直通sql ADO.NET:
public void MakeList() { int start = Environment.TickCount; sqlCommand sqlCommand = new sqlCommand("SELECT * FROM tDokument",_connection); sqlDataAdapter da = new sqlDataAdapter(sqlCommand); DataSet ds = new DataSet(); da.Fill(ds); int end = Environment.TickCount; GridView1.DataSource = ds; GridView1.DataBind(); Label1.Text = (end - start).ToString(); }