小编Chr*_*itz的帖子

多个表上的SQL索引,可以这样做吗?

一直在寻找解决方案,

转到(1)或(2)跳过描述,首先我会解释一下情况.

我的公司升级了我们的erp.系统,我的主要工作是创建公司其他人使用的列表,我在升级过程中从这个系统数据库中获取所有数据,我们将一些数据转换为匹配新版本,其中一些被遗忘,其中一些不是篡改并直接导出到新的数据库,它在一个单独的服务器上,基本上是一个成功的新ERP.系统工作正常,但我的很多列表已被破坏,我的列表使用的数据丢失/ partially_missing/all_there

好吧所以问题是我需要从旧数据库中丢失数据,好吧新旧数据库上的联合应该能够做到这一点,但是我不想要重复记录,"转换到新数据库的数据也存在于老数据库"因此他们可以存在两个字段,我试过"

所以2.我的解决方案的版本

我缺少主键"iseries数据库"所以我去了一个组合使用uniqe密钥的组合,"花了太长时间来解释我是如何做到的"然而它最终在我用两个数据库上的联合视图,制作确保没有记录存在两次,

(1)所以这就是我现在所看到的,新旧表格数据的组合视图,所有这些都是通过对"uniqe"键的检查构建的......每当我需要已经升级的数据时,我必须在每个表上运行一个昂贵的查询,"一些使用这些视图超过40次"(问题1)我如何"成本有效"从两个不同的模式/数据库中获取数据并绑定在一起?

(2)我唯一可以想到给我这个表现的是制作索引而不是我建立的这些视图,但是直到现在我还没有找到任何关于如何的信息,(问题2)我可以创建一个索引超过两个表,

我的数据库是/ 400 - iseries然而我对任何数据库类型的解决方案感兴趣,我对资源非常灵活

:编辑:用于创建视图稍微修改的代码,

SELECT

CTCONO,
CTDIVI,
CTSTCO,
CTSTKY,
CTLNCD,
CTTX40,
CTTX15,
CTPARM,
CTTXID,
CTRGDT,
CTRGTM,
CTLMDT,
CTCHNO,
CTCHID

FROM NEWDB.CSYTAB
UNION
SELECT * FROM OLDDB.CSYTAB

WHERE ( CTCONO,CTDIVI,CTSTCO,CTSTKY,CTLNCD ) NOT IN
(
SELECT A.CTCONO,A.CTDIVI,A.CTSTCO,A.CTSTKY,A.CTLNCD FROM NEWDB.CSYTAB A, OLDDB.CSYTAB B
WHERE A.CTCONO = B.CTCONO
AND A.CTDIVI = B.CTDIVI
AND A.CTSTCO = B.CTSTCO
AND A.CTSTKY = B.CTSTKY
AND A.CTLNCD = B.CTLNCD

)
Run Code Online (Sandbox Code Playgroud)

sql indexing

7
推荐指数
2
解决办法
3万
查看次数

标签 统计

indexing ×1

sql ×1