我的asp.net程序有问题。我正在一个非常大的数据库上执行Datatable.Compute
,其中包含like
条件。结果需要4分钟才能显示或执行请求超时。如果我使用=和修复文本执行相同的请求,则需要将近1分钟才能显示,这对我来说是可以接受的。
以下是这么慢的行:
float test = (int)Datatbl.Tables["test"].Compute("COUNT(pn)", "pn like '9800%' and mois=" + i + " and annee=" + j);
我一直在寻找解决方案2天。
请帮帮我。
答案 0 :(得分:1)
您是否从数据库中检索数据表中的数据?你有权访问数据库吗?
如果是这样,一个选项是研究将查找和聚合移动到数据库中的方法,而不是在C#代码中进行。一旦它在数据库中,如果需要,您可以为'mois'和'annee'列添加索引,这可能会大大加快查找速度。如果'9800'是硬编码值,那么你甚至可以添加一个由一个布尔列组成的非规范化,指示'pn'列是否以'9800'开头并在此列上放置一个索引。这可能会使查找速度非常快。
有很多选择。
答案 1 :(得分:1)
我找到了。
我使用Dataview并将结果发送到DataTable。这加快了10次这个过程
这是一个例子:
DataView dv = new DataView(Datatbl.Tables["test"], filter, "pn", DataViewRowState.CurrentRows);
DataTable test = dv.ToTable();
然后你可以使用“test”DataTable。