首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用过滤器查询大表与数据库中的小表相比-有性能上的提升吗?

使用过滤器查询大表与数据库中的小表相比-有性能上的提升吗?
EN

Stack Overflow用户
提问于 2019-06-18 22:06:46
回答 1查看 112关注 0票数 0

我有一个包含1000万条记录的大表,用于我们现有的应用程序之一。我们正在开发一个新的应用程序,它只需要7000条记录的大表的过滤结果集。

我的问题是,与使用过滤条件查询大表(它将连接到模式中完全独立于现有应用程序的少数其他表)相比,使用7000条记录的较小表是否会有性能提升?或者我应该避免冗余,在一个表中维护所有数据?这是数据仓库中的设计。请给我建议!

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 22:16:54

对于几乎任何数据库,使用示例表都会明显更快。这是因为读取记录需要加载较少的数据页。

此外,如果正在更新基表,则“快照”将与主表上发生的页、表和行锁隔离。从性能的角度来看,这是好的,但这意味着版本可能会不同步,这可能是不好的。

而且,从查询的角度来看,样本的统计数据会更准确。这有助于优化器选择最佳的查询计划。

我可以想到两种情况,性能可能不会有显着提高。第一种情况是,如果您的数据库支持聚集索引,并且所需的行由一系列索引键(或单个键)定义。它们将是“相邻的”,因此聚集索引将扫描大约相同数量的页面。实际的索引结构有轻微的开销。

类似地,如果您的记录太大,以至于每个数据页只有一条记录,那么第二个表的优势将会很小。它将消除索引访问开销,但不会减少读取次数。

这些注意事项都没有说明您是否应该使用单独的表。您应该在您的环境中进行测试。管理一个单独的表的开销(创建和删除它在性能和应用程序复杂性方面都有成本)可能会超过较小的性能收益。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56651024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档