【问题标题】:Sybase Query Plan too large lots of "child tables"Sybase 查询计划过多的“子表”
【发布时间】:2015-02-02 14:21:14
【问题描述】:

我有一个简单的查询:

DELETE FROM TABLE1 WHERE ID=1

此表至少被其他 90 (X) 个表引用:

ADD CONSTRAINT FK_TABLEX_TABLE1
FOREIGN KEY (ID)
REFERENCES "db"."TABLE1"(ID)

查看给定查询的计划,它确实很大。 我们有DIRECT RI FILTER Operator (VA = 103) has 98 children.,然后是一堆SCAN Operator (VA = X) FROM TABLE TABLEX ...

问题在于,当我们使用批量删除 (JDBC) 并立即达到过程缓存限制时(我们确实尝试增加很多,但解决方案并不好,因为子表数意味着增加)。

但是,我的DELETE 查询应该只查看每个不同批次的 5 个表(我知道 ID XXX、YYY 和 ZZZ 由 TABLEX、TABLEX+1、... TABLEX+4 引用)。有没有办法强制查询计划将扫描限制在某些表?

修改数据模型并不是一个真正的选择。

Sybase 15.0.3
JConnect3d 6.0.5

我确实减少了批处理中完成的查询数量,从 1000 到 100 不会再崩溃。这是一个解决方案,但我想减少查询计划,而不是批处理。

【问题讨论】:

    标签: jdbc sap-ase sql-execution-plan


    【解决方案1】:

    最后,我们根据子表的数量计算出了批量大小。

    表越多,同批次更新越少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-31
      • 2015-01-18
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多