我们有几个表,我们的大多数查询只使用几个连接,换句话说,我们有几乎每个查询都使用的2-3个连接。如果表格越来越大,如何加速这种常见联接的最常见方法是什么?我们想使用SQL Server或Oracle。
答案 0 :(得分:2)
物化视图 - oracle支持这些视图,在某些情况下它们很有用,尤其是当有许多读取而不是写入时: http://docs.oracle.com/cd/B10501_01/server.920/a96520/mv.htm
指标 - 分析/解释查询计划,看看添加索引是否有帮助。通常,您可以通过为不同查询提供不同的指示来提高速度。您还可以提供提示,以告知查询解析器用于特定查询的索引。
非规范化 - 将这些表中的一些数据存储在相关表中,而不是必须加入才能获得它。
缓存 - 增加查询缓存的大小,或在应用中创建缓存层。
答案 1 :(得分:1)
一些选项
答案 2 :(得分:1)
最常见的方法是建立索引,但是您没有提供足够的信息来更具体。
以下是一些情景:
(1)您有一堆连接到中央表的引用表,例如事实表。
在这种情况下,您需要在引用表上定义自动增量主键。它自动作为索引。
(2)您的查询具有高度选择性
在这种情况下,您希望将索引集中在where子句中的字段上。当第二个表非常小时,尤其如此,因此顺序搜索类似于索引搜索。
(3)你加入的桌子确实是一个性能瓶颈
在这种情况下,您可能希望将连接的结果实例化为表或实例化视图。当您的连接标准很复杂时,可能需要这样做,例如在连接标准中使用数据范围。
(4)您还有其他选项,例如分区数据。