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;

TableA 大约有 1.3 亿条记录,而 TableB 大约有 6 亿条记录。我在 15 分钟后多次中止查询,因为我不想阻塞整个公司对数据库的访问。我可以做些什么来优化我的代码以提高加载速度,还是工作完成只是时间问题?

4

2 回答 2

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 比 insert 快。但是您可以尝试此选项一次。

替代尝试:

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
于 2015-08-22T16:09:55.693 回答
0

其中一张表至少需要 Sys_ID 上的索引。如果有,那么统计数据是最新的吗?如果没有,请更新 INDEX STATISTICS。您可以通过以下方式了解统计信息:

SELECT DATACHANGE(tab_name, null, null)
于 2015-08-21T12:41:03.057 回答