SQL Server 在左连接上创建索引。

8 浏览
0 Comments

SQL Server 在左连接上创建索引。

我有一个包含大约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 //快速
ISNULL(t2.ColumnName2,'') LIKE @arg2//慢
ISNULL(t3.ColumnName,'') LIKE @arg3 //慢

如果我搜索t3.Column2,查询会变得很慢。

如果我搜索一些t1列(其中没有左连接),则速度非常快。有什么问题?我该如何加快速度?我尝试过不使用连接,但这是不可能的。

我可以在表上建立索引吗?在这种特殊情况下应该建立在哪个上?

0
0 Comments

SQL Server putting Index on left join的问题出现的原因是查询语句的性能较差。为了解决这个问题,可以尝试以下几种方法:

1. 在t2表和t3表的ColumnName列上创建索引。

2. 如果上述方法没有改善性能,可以在t2表的ColumnName2列上再创建一个索引。

需要注意的是,索引对于更新、插入和删除操作会有一定的影响。如果想了解更多关于索引的信息,可以参考这里的链接:[https://stackoverflow.com/questions/141232](https://stackoverflow.com/questions/141232)。

对于只执行查询操作而不进行更新或插入的情况,添加索引肯定会提高查询语句的性能。

另外,根据问题的编辑,如果只执行查询操作,可以尝试移除ISNULL函数的使用。修改查询语句如下:

t1.ColumnName LIKE OR t2.ColumnName2 LIKE ...

希望以上方法能够解决你的问题。

0