Tengo una tabla [MyTable] con una columna [MyColumn] NVarchar (50). Tengo un índice no agrupado en esta columna, ahora mientras se ejecuta el siguiente dos consultas:Buscar índice con unir
SELECT 1
FROM [MyTable] M
WHERE M.[MyColumn] = @MyColumn
SELECT 1
FROM [MyTable] M
WHERE M.[MyColumn] = COALESCE(@MyColumn, M.[MyColumn])
noté la primera consulta está utilizando Index Seek (no agrupados) y la segunda es el uso de Index Scan (no agrupado). ¿Puedo saber cómo utilizaré index seek con coalesce o isnull?
Solo que 'MyColumn = @MyColumn O @MyColumn IS NULL' también conducirá a un escaneo de índice. ;-) – Tomalak
Ejecuto "MyColumn = @MyColumn OR @MyColumn IS NULL" pero también desafortunadamente el mismo resultado que está usando Index Scan (no agrupado) –
'OR' no cortocircuita, revisará cada fila independientemente. Si el optimizador sabe que necesitará verificar cada fila, solo hará un escaneo. – JNK