我有一个简单的查询:
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不会再崩溃。这是一个解决方案,但我想减少查询计划,而不是批处理。
答案 0 :(得分:0)
最后,我们最终得到了根据子表数量计算的批量大小。
表格越多,同一批次中的更新就越少。