【发布时间】: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