SQL Server将索引放在左连接上

时间:2014-07-21 08:52:30

标签: c# sql-server performance indexing

我有大约50.000条记录的数据库。假设我在存储过程中使用此查询(它只是一部分)(使用c#+ sqlserver):

SELECT .... 
FROM
Table1 t1
LEFT JOIN Table2 t2 ON t1.ID=t2.ID
LEFT JOIN Table3 t3 ON t2.ColumnName=t3.ColumnName
WHERE 
ISNULL(t1.ColumnName,'') LIKE @arg1 //FAST
ISNULL(t2.ColumnName2,'') LIKE @arg2//SLOW
ISNULL(t3.ColumnName,'') LIKE @arg3 //SLOW

如果我在t3.Column2之后搜索,则查询速度很慢。 如果我照看一些t1列(其中没有左边的连接),那么它就像一个魅力,非常快。问题是什么?我怎样才能加快这个速度?我试图不使用连接,但它不可能。 我可以在表上放一些索引吗?在这个具体案例中哪个?

1 个答案:

答案 0 :(得分:1)

我会尝试以下选项,看看性能是否有所改善。您也可以尝试执行计划'对于任何指数建议。

上创建索引
  • t2&中的ColumnName T3中的ColumnName
  • 如果上面没有帮助在t2
  • 中的ColumnName2上再添加一个索引

P.S。索引将对更新/插入/删除产生影响,更多信息here

编辑 - 根据编辑过的问题更新