Sybase 查询计划太多 "child tables"

Sybase Query Plan too large lots of "child tables"

我有一个简单的查询:

DELETE FROM TABLE1 WHERE ID=1

这个 table 被至少 90 (X) 个其他 table 推荐:

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)并立即达到过程缓存限制(我们试图增加很多,但解决方案并不好,因为children tables号是要增加的)。

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

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

Sybase 15.0.3
JConnect3d 6.0.5

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

最后我们得到了根据子 table 的数量计算出的批量大小。

越table同一批更新越少