Sql 内部连接查询性能非常慢

Sql 内部连接查询性能非常慢,sql,sql-server,inner-join,query-performance,Sql,Sql Server,Inner Join,Query Performance,我有一个SQL查询,如下所示: SELECT * FROM tableB ta INNER JOIN tableB tb ON tb.someColumn = ta.someOtherColumn someColumn和someOtherColumn都不是它们表的主键。两者都是数据类型int TableA有约500.000条记录,tableB有约250.000条记录。查询大约需要2分钟才能完成,我认为这太长了 查询执行计划如下所示: 我已经尝试过(a)使用选项(重新编译)和(b)在相应的表

我有一个SQL查询,如下所示:

SELECT * 
FROM tableB ta
INNER JOIN tableB tb ON tb.someColumn = ta.someOtherColumn
someColumn
someOtherColumn
都不是它们表的主键。两者都是数据类型
int

TableA
有约500.000条记录,
tableB
有约250.000条记录。查询大约需要2分钟才能完成,我认为这太长了

查询执行计划如下所示:

我已经尝试过(a)使用
选项(重新编译)
和(b)在相应的表上创建
索引。无济于事


我的问题是:如何提高此查询的性能?

在tb.SomeOtherColumn上创建一个索引,并在ta.SomeOtherColumn上创建另一个索引


然后,当您运行此查询时,哈希匹配应替换为一个内部循环,并且速度会快得多。

生成了多少行?您创建了什么索引?要返回多少列?如果您试图返回太多的列,则选择*会很慢”(b)在相应的表上创建索引。“您创建了哪些索引?将其转储到临时表需要多长时间?”?这可能是在ManagementStudio中选择所有这些行的问题。发布表的DDL和所述表的相应索引。该查询计划显示两个表都是通过扫描读取的,因此您拥有的任何索引都不会用于查找;因此,这是一个缓慢的原因。看看当你不提供DDL时会发生什么。我们浪费时间猜测:(@beta)您可能执行了一些错误的操作。除非您提供重现该问题的脚本,否则我无法进一步帮助您。