如何优化此删除查询

时间:2015-10-09 09:50:52

标签: sql db2 sql-delete sqlperformance

表格结构

  • Global_Record 1 .. * Division_Record
  • Division_Record 1 .. * Branch_Record
  • Branch_Record 1 .. * Branch_Response_Record
  • Branch_Response_Record 1 .. * Product_Response_Record

  • Global_Record 1 .. * Product_Record

  • Product_Record 1 .. * Product_Response_Record

所有主键都是整数自动增量列。

这里我必须删除属于Global_Record的Branch_Response中的记录 如果Product_Response中没有数据。 (Product_Response与Branch_Response_Record有外键关系)

我用我非常基本的SQL知识编写的示例查询在这里, Query中使用的所有列都有索引,因此我认为性能应该没问题。

但是我想知道我是否可以用EXISTS替换IN以提高性能?或任何其他选择?

add_library(Kernel SHARED $<TARGET_OBJECTS:Network>

我没有提供任何样本数据,因为大多数密钥只涉及查询,如果我错了请告诉我,我也会添加一些数据:)

提前致谢!

1 个答案:

答案 0 :(得分:0)

最终,在不知道您的数据的情况下,只能进行大量的查询优化。但是:

  1. 第二个子查询(and not in部分)似乎有误:您似乎正在选择branch_response_id并将其与branch_record_id进行比较。
  2. 如果使用inner join代替嵌套的in子句,第二个子查询可能会更有效率。
  3. 一种可行的优化方法是将您要删除的所有branch_response_id放入会话表中,然后使用该信息进行简单的删除查询。