我有一张包含1000万条记录的表格.这被认为是很多记录吗?我应该担心搜索时间吗?如果没有,它会继续增长,那么什么被认为是一张大桌子?表大小对搜索时间有多大影响,我可以做些什么来改善这些问题,最好是在它们成为问题之前?
Aar*_*and 33
"大"就像"聪明" - 它是相对的.1000万行是一个很好的大小,但表是否很大取决于许多因素:
sys.dm_db_partition_stats)?搜索时间不一定由大小本身驱动,而是由您的索引策略的有效性以及您为搜索运行的查询类型.如果你有这样的事情:
WHERE description LIKE '%foo%'
Run Code Online (Sandbox Code Playgroud)
那么正常的指数对你没有任何帮助,你应该开始担心.您可以考虑使用全文搜索这样的案例.
具有单个INT列的表中的1000万行(例如,Numbers表)什么都不是.1000万行产品具有长描述,XML,地理数据,图像等等.
有一个原因是SQL Server的最大容量规范没有记录表中行数的上限.
在db设计中,large不是一个有用的概念.
性能取决于很多因素,但标签large不是其中之一.相反,关注自己:
只有这样,您才会得到与您相关的答案.除此之外,应用程序设计也是一个重要因素.N + 1查询和缓存会对感知(和实际)性能产生巨大影响.
正如亚伦所说,这是相对的.但也许我可以详细说明一下.
首先,一个主要因素是列的大小.如果你有一个只有1000万个整数的表(并且有理由你可能想要这样的东西,请查看Tally Tables.)然后它根本不大.另一方面,只有一百行的非规范化表可能占用大量空间并且如果每行包含一个id字段,其中整数充当主键,后跟varchar(max)和html,则会产生大量性能问题然后是一系列varbinary(max)列,其中包含该html使用的jpgs.
因此,要了解表的大小,您需要查看行数和每行的大小.对于可能更有用的大小的一个度量标准是查看它占用的空间.(假设这比SQL Server 2000晚,您可以右键单击SSMS中的表,转到属性,然后转到存储页面.)
当然,仍然很难说何时会开始影响性能.一旦表格太大而无法放入RAM内部,您肯定会注意到性能的变化,但是这种情况可能会在大小合适的数据集中频繁发生,特别是如果您选择部分非规范化并且不是引起关注的原因.索引太大而无法容纳在RAM内部会导致更大的性能问题,并且可能会导致进行评估.但它不一定是一个问题,特别是如果它是一个覆盖索引的某些查询,你正在使用RAM约束环境(RAM约束意味着也是相对的,但对于一个粗略的经验法则,我会尝试甚至在桌面上至少要使用8 GB,这些桌面将用SQL Server进行认真的工作).
现在,表大小当然可以成为搜索速度的一个因素,并且有办法处理它.但在我谈到这些之前,请允许我指出,这通常是我在性能方面看到的较小因素之一.我最近在这里写了一篇关于此的文章.在考虑表大小之前,我会考虑确保查询已经优化,并且索引是有意义的.我甚至会考虑增加RAM并获得更快的硬盘驱动器(如果你能负担得起一个足够大的硬盘,那么SSD会有所不同),然后再担心桌面尺寸.
但是,如果您想减小表格大小:
摘要:
这比我预期的要长,所以总结一下:
| 归档时间: |
|
| 查看次数: |
24728 次 |
| 最近记录: |