【发布时间】:2012-10-10 19:18:48
【问题描述】:
我正在参加一项性能练习,我想知道是否有机会改进这一点,只是通过查询此信息的方式,而不是尝试进行任何数据库架构或数据更改。
以下查询大约需要 200 毫秒才能执行。我知道我雄心勃勃,但挑战在于是否有办法让自己失望。我准备使用 ADO.NET 或使用 SP 或使用 sql 查询,但不能进行任何数据更改。此外,EmpTable 有大约 2000 万行。 它选择与参数匹配的 1 条记录。
有人认为这仍然可以进一步优化吗?
Log.Time()
using (MyDataContext db = MyDataContext.GetContext())
{
db.ObjectTrackingEnabled = false;
var _Query = from t in db.EmpTable
where t.id == paramId
select t;
if (!_Query.Any())
return null;
}
Log.Time() -- 200 ms approx
【问题讨论】:
-
您是否已经分析了查询?代码没有太大变化,因此您必须考虑在表格上添加适当的索引。
-
一次将数据加载到哈希表中,然后在内存中搜索paramId。我不认为你可以减少查询执行时间。
-
如果性能是一个很大的问题,我会避免使用 linq,因为它生成的 sql 有时会被混淆。
-
@48klocs 索引已经存在,我们将 paramId 与主键进行比较。
-
对其进行分析。实际查询需要多长时间才能返回?如果它在不到 200 毫秒内返回,您可能会看到 precompiling the query 是否有帮助(不确定它是否适用于这么简单的事情)
标签: c# sql performance linq query-optimization