【发布时间】:2015-11-13 04:54:53
【问题描述】:
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 分钟后多次中止查询,因为我不想阻塞整个公司对数据库的访问。我可以做些什么来优化我的代码以提高加载速度,还是完成工作只是时间问题?
【问题讨论】:
-
表上有索引吗?在
Sys_ID -
是的。 TableA 上有 85 个,TableB 上有 24 个。这对运行速度有何影响?
-
对于 150 万和 6 亿的表连接来说,15 分钟或多一点似乎是正常的,尽管它没有太多列,但要处理的仍然很多。索引对于性能非常重要,特别是如果您要连接如此大的表,重要的是要知道对您认为使用它可能很聪明的每一列使用哪种索引类型。我不明白你为什么担心阻塞访问,你正在提交,在 IQ 中你总是可以进行选择,不管有多少人在同一张表上做一个选择语句,你只是从表中读取,你没有锁定它。
标签: sql select sybase sap-iq select-into