SQL SERVER相当于一个HashMap?

问题描述 投票:0回答:1

在Java应用程序中,如果必须多次查询一个表(小表),可以简单地创建一个HashMap并将表的内容存储在其中。完成此操作后,可以对HashMap进行后续调用,而不是对表进行调用,从而大大提高程序的性能。

我在SQL Server中有类似的情况,我必须在存储过程中循环说5,00,00次,并且每次都有许多查询的小表。有没有办法通过在SQL Server中使用等效概念来大幅减少执行过程所需的时间?

sql sql-server hashmap
1个回答
2
投票

数据库具有类似的功能,但它隐藏在页面缓存机制中。如果您反复使用表,那么它将被加载到内存中,并且内存操作比磁盘操作快得多。

我应该注意,您可以使用内存优化表将表显式存储在内存中(请参阅here)。如果您的应用程序需要,那些数据修改可以保持数据完整性。

此外,如果要随机访问表中的行,则应定义索引。大多数数据库(包括SQL Server)中的索引都使用二叉树。二叉树和散列映射之间的性能差异 - 特别是在小型表上 - 并不重要。

我应该注意,如果您的目标是尽可能编写最优化的代码,那么SQL可能不是正确的环境。 SQL引擎比流程数据做得更多,特别是在数据管理和维护数据完整性方面。这导致了开销。对于他们所做的一切,它们通常非常有效,但对于特定的算法,在其他地方编写逻辑可能会更快。 (当然,在数据库中,您可以免费获得并行性。)

© www.soinside.com 2019 - 2024. All rights reserved.