SELECT * INTO #testtable查询需要相当多的时间吗?

时间:2015-08-19 18:36:59

标签: sql select sybase sybase-iq 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;

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

2 个答案:

答案 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