select TableA.Sys_ID, TableA.State_Code,
TableA.Zip_Code, TableA.Birth_Date, TableA.Gender,
TableA.Source_code, TableB.Sys_ID
into #testtable
from DM.TableA
inner join DM.TableB
on TableA.Sys_ID = TableB.Sys_ID;
TableA有大约1.3亿条记录,而TableB有大约6亿条记录。我在15分钟后多次中止了我的查询,因为我不想阻止整个公司访问数据库。我可以做些什么来优化我的代码以获得更高的加载速度,或者在作业完成之前只是一个时间问题?
答案 0 :(得分:0)
其中一个表至少需要一个Sys_ID索引。 如果有,那么统计数据是最新的吗? 更新指数统计 如果不。 您可以了解统计信息的用途:
SELECT DATACHANGE(tab_name, null, null)
答案 1 :(得分:0)
请执行以下操作,检查是否有帮助。
select TableA.Sys_ID, TableA.State_Code,
TableA.Zip_Code, TableA.Birth_Date, TableA.Gender,
TableA.Source_code, TableB.Sys_ID
into #testtable
from DM.TableA
inner join DM.TableB
on TableA.Sys_ID = TableB.Sys_ID where 1=2;
insert into #testtable select TableA.Sys_ID, TableA.State_Code,
TableA.Zip_Code, TableA.Birth_Date, TableA.Gender,
TableA.Source_code, TableB.Sys_ID from DM.TableA
inner join DM.TableB on TableA.Sys_ID = TableB.Sys_ID order by
TableA.Sys_ID
您可以使用MDA表(monOpenobjectActivity)监视将记录插入临时表,以查看在多长时间内插入了多少记录。
虽然Select into比插入更快。但是你可以尝试一次这个选项。
替代尝试:
select TableA.Sys_ID, TableA.State_Code,
TableA.Zip_Code, TableA.Birth_Date, TableA.Gender,
TableA.Source_code, TableB.Sys_ID
into #testtable
from DM.TableA
inner join DM.TableB
on TableA.Sys_ID = TableB.Sys_ID order by TableA.Sys_ID