Estoy tratando de unir dos tablas relativamente simples, pero mi consulta está experimentando serias interrupciones. No estoy seguro de por qué, pero creo que podría tener algo que ver con la función 'entre'. Mi primera tabla es como la siguiente (con una gran cantidad de otras columnas, pero esto sería la única columna que estoy tirando):¿La función 'BETWEEN' es muy costosa en SQL Server?
RowNumber
1
2
3
4
5
6
7
8
mi segunda tabla "Grupos" mis filas en "bloques", y tiene el siguiente esquema:
BlockID RowNumberStart RowNumberStop
1 1 3
2 4 7
3 8 8
el resultado deseado estoy mirando para conseguir es vincular RowNumber con el BlockID como a continuación, con el mismo número de filas de la primera tabla. Así, el resultado sería el siguiente:
RowNumber BlockID
1 1
2 1
3 1
4 2
5 2
6 2
7 2
8 3
Con el fin de conseguir eso, he utilizado la siguiente consulta, escribiendo los resultados en una tabla temporal:
select A.RowNumber, B.BlockID
into TEMP_TABLE
from TABLE_1 A left join TABLE_2 B
on A.RowNumber between B.RowNumberStart and B.RowNumberStop
table_1 y table_2 son en realidad tablas muy grandes . La Tabla 1 es de aproximadamente 122M Filas, y la TABLA_2 tiene alrededor de 65M filas. En la TABLA_1, RowNumber se define como 'bigint', y en TABLE_2, BlockID, RowNumberStart y RowNumberStop se definen como 'int'. No estoy seguro de que eso marque la diferencia, pero solo quería incluir esa información también.
La consulta se colgó durante ocho horas. Consultas similares sobre este tipo y volumen de datos no se acercan tanto a este tiempo. Así que me pregunto si podría ser la declaración 'entre' que cuelga esta consulta.
Definitivamente agradeceríamos cualquier sugerencia sobre cómo hacer esto más eficiente.
¿Has mirado el plan de ejecución? – HLGEM
nunca visto entre usado en una unión antes de – DForck42