1

我在 SQL Server 2008 R2 中有一个总共有 170 万行的表。

这是我的担忧,我需要在我的程序中显示所有 170 万条记录。我使用的标准方法是

select col1, col2, col3,... , col13 from table

但是,在应用程序端(VB.NET)中,加载 DataGridView 控件中的所有记录大约需要 1 分钟。

不知何故,如果用户需要等待一分钟才能查看,那就不好了。

我的问题是,有没有什么方法可以考虑更快的全选语句?例如:配置、分页等?

P / s:我已经阅读了一些关于索引的内容。如果我没记错的话,索引更适合像只选择特定记录仪式这样的情况?

感谢所有建议和帮助!

问候,电脑

4

2 回答 2

1

我建议不要一次返回所有行。有人会看每一行吗?

聚集索引的读取速度更快,因为所有数据都按索引按物理顺序存储。由于您正在阅读每一列,因此请确保定义了聚集索引。

SQL 2008 R2 聚集索引

于 2013-07-29T02:45:54.173 回答
0

没错,索引不会帮助您更快地检索表中的所有 1.7m 记录。索引是面向查找的数据结构,可以根据行的属性更快地找到行 - 属性表示特定列的值或根据列值计算的表达式。它们通常是某种类型的树对象,可以更快地将表中的行过滤到与谓词匹配的行,目的是避免像应用程序正在执行的排序那样进行全表扫描。

但索引仅在要检索的行数明显小于表中的总行数时才有用。当您想显示所有行时,它们根本没有帮助。

我建议您重新检查您的申请要求。真的有必要在每次页面加载时检索每一行吗?他们经常改变吗?你能在数据库和应用程序之间放置某种 NoSQL 缓存层吗?Memcached 可能会显着加快这一速度。

我还假设每次使用应用程序时您确实需要所有 1.7m 的行。你在和他们做什么?

于 2013-07-29T02:42:37.417 回答