我有一个表 A [Schema: key_id, x,y,z,...]
,它的键 id 列是唯一的,并且增量播种为 1。现在我有一个表 B [schema: key_id, key_idOfA, x,y,z,....]
,它是具有类似模式的 A 的备份(只有差异表 B 有它自己的key_id
,它也保持原始key_id
表 A)。
我有一项服务,它根据 where 子句将一些行从 A 传输到 B。我尝试了一次这项服务,通过将行从 A 传输到 B,它运行良好。现在要再次检查此服务,我必须将行 (key_idOfA, x, y,z,...) 从 B 传输回 A。
为了避免丢失表 A 的原始 key_id,我首先使用了
SET IDENTITY_INSERT A ON
并转移了工作正常的行。转移后我使用
SET IDENTITY_INSERT A OFF
现在,当我再次运行该服务时,需要很长时间才能从表 A 中获取几行,这会导致超时。准确地说,在 SQL Server Management Studio 上获取 30,000 行需要 5 分钟。从服务中,查询由于 3 分钟超时而超时。
我知道打开和关闭表的身份插入是一种不好的做法,但这是一个测试床数据库,我永远不会在生产数据库上这样做。
我的问题:
由于查询花费了这么多时间,索引是否混乱?还是有其他问题?
我可以采取不同的方法将行传回而不弄乱索引吗?