La AUTORIZACIÓN, conseguida tan un pedacito agujereó y decidía a agregar varios cientos de mil filas a una tabla.
No demasiado sure de la distribución de valores sobre la gama de categorías, transactioncodes y fechas, la hizo tan bastante incluso a través de la gama de datos.
Medias docenas entonces intentadas de diversos acercamientos, y analizado los datos/las estructuras de la tabla.
Si se asume que la identidad única era una llave primaria arracimada (asunción sí grande), sugiere el crear del índice folowwing:
CREAR EL ÍNDICE de NONCLUSTERED [idx_my_table_trans_cat_id] ENCENDIDO [dbo]. [my_table]
(
[transactioncode] ASC,
[categoría] ASC,
[unique_id] ASC
)
INCLUIR ([fecha])
CON (SORT_IN_TEMPDB = APAGADO, IGNORE_DUP_KEY = APAGADO, DROP_EXISTING = APAGADO, EN LÍNEA = APAGADO)
y entonces la pregunta:
; con cte2 como
(
a.unique_id selecto, a.category, a.date, (minuto selecto (unique_id) de c my_table donde c.unique_id > a.unique_id) como next_unique_id
de a my_table
donde a.transactioncode = “A”
)
seleccionar *
de cte2 a
interno ensamblar b my_table en a.next_unique_id = b.unique_id y a.category = b.category y b.transactioncode = “R”
donde datediff (d, a.date, b.date) = 1
parece trabajar realmente bien usar el índice de la cubierta sin volver a las informaciones en bruto…
Pero por otra parte hay algunas asunciones (según la fijación anterior también), y necesita realmente ser aclarado, aunque, bastante feliz con los resultados dados esas asunciones hasta el momento.