Sybase查询计划过多的子表"

时间:2015-02-02 14:21:15

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

我有一个简单的查询:

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个表(我知道IDX,YYY和ZZZ由TABLEX,TABLEX + 1,... TABLEX + 4引用)。有没有办法强制查询计划将扫描限制到某些表?

修改数据模型实际上不是一种选择。

Sybase 15.0.3
JConnect3d 6.0.5

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

1 个答案:

答案 0 :(得分:0)

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

表格越多,同一批次中的更新就越少。