SQL Server性能改进:查找另一个表中不存在的记录[关闭]

问题描述 投票:0回答:1

我有两个桌子

  1. 主数据(id,datek,timesk):该表存储了约5亿条记录。

  2. 虚拟(id,datek,timesk):该表存储了1000万条记录

数据类型:Id为varchar(500),日期和时间为整数。

我必须从Master中找到(id,datek,timesk)元组,这些元组不在Dummy中。我可以在三个字段上使用NOT EXISTS或LEFT JOIN。

但是,执行查询要花费很多时间。这两个表上都没有索引。

任何有关性能改进的技巧将不胜感激。

UPDATE 1

感谢您的建议。我尝试了以下操作,但没有]]的执行时间(〜30分钟)或I / O估计成本(〜7000)都有改善。

  1. 母版上的非聚集索引(id,datek,timesk)

  • Dummy上的非聚集索引(id,datek,timesk)
  • Master and Dummy上的非聚集索引(id,datek,timesk)
  • 还有其他建议吗?

    我有两个表Master(id,datek,timesk):该表存储约5亿条记录。虚拟(id,datek,timesk):该表存储1000万条记录。数据类型:Id为varchar(500),datek和...

    sql-server indexing query-performance sql-tuning
    1个回答
    0
    投票

    您可以索引dummy。我建议:

    select m.*
    from master m
    where not exists (select 1
                      from dummy d
                      where d.id = m.id and d.datesk = m.datesk and d.timesk = m.timesk
                     );
    
    © www.soinside.com 2019 - 2024. All rights reserved.