Roc*_*ngh 11 sql-server indexing sql-server-2005 sql-server-2008
我有一个表[MyTable],列[MyColumn] NVarchar(50).我在此列上有一个非聚集索引,现在运行以下两个查询时:
SELECT 1
FROM [MyTable] M
WHERE M.[MyColumn] = @MyColumn
SELECT 1
FROM [MyTable] M
WHERE M.[MyColumn] = COALESCE(@MyColumn, M.[MyColumn] )
Run Code Online (Sandbox Code Playgroud)
我注意到第一个查询是使用Index Seek(NonClustered),第二个查询是使用Index Scan(Non Clustered).我可以知道如何利用coalesce或isnull来使用索引搜索?
我可以知道如何使用合并或 isnull 进行索引查找吗?
也许不是您问题的答案,但您可以有两个不同的疑问。一种用于 where 情况@MyColumn is null,另一种用于您要@MyColumn在 where 子句中使用的情况。
IF @MyColumn IS NULL
BEGIN
SELECT 1
FROM [MyTable] M
END
ELSE
BEGIN
SELECT 1
FROM [MyTable] M
WHERE M.[MyColumn] = @MyColumn
END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3485 次 |
| 最近记录: |