2010-01-19 18 views
0

我的网页之一填充了一个droplist,其中包含从SQL Server中抽取的约60k个项目,并且此操作需要10秒钟才能完成。是否有一些技巧或优化我可以尝试提高性能?我正在使用配置为DataReader的SqlDataSource。使用SQL Server在ASP.NET中填充droplist需要很长时间。任何优化?

感谢您的任何帮助。

+5

只是想知道,下拉列表中的60k项目如何解决可用性问题? – kd7 2010-01-19 14:54:17

+0

那么,一旦页面加载,并且所有的项目都被加载到内存中,它就可以正常工作。在此之前,它非常波涛汹涌。 – Curtis 2010-01-19 15:01:00

+0

更正。我正在加载40k项目。 – Curtis 2010-01-19 15:03:49

回答

2

任何从数据库获取大量数据的操作都需要一段时间。

用这么多项目填充下拉菜单也需要一些时间,因为将生成的html传输到浏览器。

更不用说,下拉列表中的60k项目不是非常有用。

优化是改变你的应用程序,所以它不需要一次去60K项目。

也许分页方法是比较合适的,你一次只能获取数据的一小部分,并可以显示其不同部分。

您可以将自动完成视为另一个选项。如果你正在做

+0

我已经考虑过了,但我认为它不会太好。我正在处理的是一个包含我们制造的每个产品记录的数据库。此特定页面允许用户根据序列号查看产品信息。用户可以输入sn,如果已知,或者在下拉列表中查找它。 – Curtis 2010-01-19 15:07:06

+0

因此,他们知道他们在下拉菜单中查找的内容 - 您是否可以使用字符串作为搜索词来提取产品? – Oded 2010-01-19 15:12:27

+0

@Curtis - 为什么尝试其他方法时效果不佳?您已经超出了在下拉列表中显示的合理记录数量。也许按类别列出你的产品库存?试想一下,如果亚马逊在下拉列表中列出了所有的CD?这只是不实际。您需要以其他方式提供产品列表,可能是通过序列号搜索,产品标题搜索,浏览分页和产品类别。 – alex 2010-01-19 15:13:40

1

检查SELECT *

更改调用数据库存储过程一个查看

尝试的结果倾倒入ASP.Net缓存并在再次查询数据库之前检查它是否为空。

2

对于性能和从用户的角度来看,60,000个项目会变得太多。尝试使用级联下拉式(如果有意义)或自动完成。

0

我觉得把60K到一个下拉列表是没有多大用处的,我建议切换到某种auto complete解决方案。

0

正如其他人所说,我认为你应该花费一些精力去思考一次检索60k记录的必要性。您是否可以不提供某种级联功能,以便每次只需要一个子集?或者也许是一个自动完成的搜索功能?有一个更好的方法。只是想一想,您不仅可以提高数据库的性能,还可以提高可用性。

相关问题