【问题标题】:Self outer Join alternative for inserting into Physical table from Temp table用于从临时表插入物理表的自外连接替代方案
【发布时间】:2018-04-08 05:29:54
【问题描述】:

如何提高这个查询的性能?

INSERT INTO ABC(TRACKING_ID,GROUP_ID,ETL_NUM,ENTITY_ID,UNI_ID,DOS_TO)
SELECT A.TID,A.TID2,A.ETL_NUM,A.ENTITY_ID,A.UNI_ID,A.DOS_TO
FROM #TEMP A(NOLOCK)
LEFT OUTER JOIN #TEMP B(NOLOCK) ON A.TID=B.TID
AND ETL_NUM<B.ETL_NUM
WHERE B.TID IS NULL

我有 1100 万条记录。处理此查询需要 9 个小时。为了调整这个查询,我在 Temp 表 ETL_NUM 上添加了索引。但它并没有提高性能。

我没有 DB 的管理员权限。

【问题讨论】:

  • 在表上为 ID 和 ETL_NUM 添加单个索引

标签: sql-server database-performance


【解决方案1】:

你能说清楚一点吗?

您想在没有管理员权限的数据库中插入 1100 万条记录吗?

您想手动插入所有数据吗?因此,您认为大约需要 9 个小时。还是只写一个查询就需要 9 小时?

好吧,如果你在谈论前一个,这取决于你如何获得数据。如果您有 JSON 或样式表或此类文件中的数据。它可以更容易。如果是后者,您可能需要询问管理员并讨论它。

【讨论】:

  • 它在存储过程中。1) 第一步创建#TEMP 表 2) TEMP 表在 5 分钟内填充 3) 最后一步我尝试使用自外连接条件将其插入 ABC 表9 小时运行查询。我提到我没有管理员权限的原因是,我无法创建跟踪或使用分析器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多