我有两个具有多对一关系的表。(甲骨文)
**Table: PARENT**
Field: A (PK)
Field: B
Field: C1
Field: C2
Field: C3
Field: C4
Field: C5
**Table CHILD**
Field: A (PK) (FK to PARENT.A)
Field: D (PK)
Field: E
插入子表和父表的记录是同时插入的。
我想知道的是最有效的方法是什么。
当前,调用应用程序为整个插入步骤调用了一个存储过程。存储过程当前具有以下签名:
Field: A
Field: B
Field: C (dilimited string)
Field: D (dilimited string)
Field: E (dilimited string)
该过程从输入循环遍历 C 并将每个值存储在一个数组中。然后使用该数组以及输入中的 A 和 B 插入到表 PARENT 中。
然后使用输入中的 A 并循环输入中的 D 和 E 并为分隔字符串中的每个项目插入表 CHILD 。
每天将调用多达 300 万次。它需要尽可能高效。
进行多次 SP 调用而不是一次调用时会损失多少效率?
处理受限字符串的所有循环似乎需要做很多工作!
我在想调用应用程序可以对 CHILD 的每个条目进行单独的 SP 调用。但是,我怎样才能确保以某种方式插入 CHILD 不会在插入 PARENT 之前发生......那将是更多的存储过程调用。(很多时候没有要插入的子记录,有的时候一般少于10条,但也有可能多达50条)
我也愿意用另一种方法来获取 Dilimted 字符串 C 中的信息。
有没有比while循环更有效的方法来从有限的字符串中获取信息?
我没有写 SP 我被要求做一个小的修改,如果可能的话让它更有效。
有任何想法吗?
笔记:
我简化了表格,实际上在 dilitied 字符串 C 中有 10 个项目而不是 5,还有两个像 C 一样的 dilited 字符串被插入到表 PARENT 中。这些表还具有比显示更多的字段
记录将在 30 天后删除。