sql >> Base de Datos >  >> RDS >> Sqlserver

Añadir un ÍNDICE a un CTE

He tenido el mismo requisito. No se pueden agregar índices a un CTE. Sin embargo, en el CTE seleccione agregar un ORDEN POR La cláusula sobre los campos unidos redujo el tiempo de ejecución de 20 minutos o más a menos de 10 segundos.

(También debe AGREGAR SELECCIONAR EL 100 POR CIENTO SUPERIOR para permitir un ORDEN POR en una selección de CTE).

[editar para agregar una cita parafraseada de un comentario a continuación]:
Si tiene DISTINTO en el CTE entonces TOP 100 PERCENT no funciona. Este método tramposo siempre está disponible:sin necesidad de TOP en absoluto en la selección, modifique la instrucción ORDER BY para que diga:
ORDER BY [Blah] OFFSET 0 ROWS