堆积花:

我在公司网站(基于.NET 2.0)上具有搜索功能,可让您使用多达9个不同的字段来缩小产品目录的范围。现在,在前端上进行选择之后,我将构建一个动态查询并访问数据库(SQL Server)以获取生成的项目编号列表。

我想摆脱每次访问数据库的麻烦,并在内存中执行所有这些操作以获得更快的结果。基本上是3500-4500行的“表”,其中有10列:项目编号(可以是主键)和9个属性字段(对于许多行都有重复的值)。 9列之间可以有任意数量的不同搜索,以获取所需的项目:


列A ='foo'和列D ='bar'
B列='foo'AND列C ='bar'AND列I ='me'
H列='foo'
等等...


根据我的研究,.Select()函数似乎是执行搜索的最慢方法,但对我而言,它是执行缩小搜索以获取项目编号列表的最快,最简单的方法:

MyDataSet.Select("Column B = 'foo' AND Column E = 'bar' AND Column I = 'me'")


在我的特定情况下,您建议我使用哪种方法作为替代方法,使其具有相同的缩小功能和更好的性能,而不是使用datatable.select()方法解决问题?

最佳答案

数据表并不是为查询而优化构建的,我不建议您沿此路线走,除非您确实有一个已记录的性能问题,可以肯定这样做会得到改善。

如果动态查询很慢,则可能是因为您没有在数据库中正确索引表。数据库被设计为能够最佳地查询您的数据,因此我的直觉是,在数据库方面的一些工作应该使您可以找到所需的位置。

如果您确实需要查询ADO.Net数据表,请确保您通读Scaling ADO.Net DataTables。它讨论了可以提高它们性能的方法,并为您提供了一些基准,以便您可以看到它们之间的区别。

10-05 17:57
查看更多