基本上问题是什么。我有这个sql
select
LAG(ID_ESTADO) over(order by ID_EXPEDIENTE,orden) ULTIMO_IDESTADO,
LAG(ID_EXPEDIENTE) over(order by ID_EXPEDIENTE,orden) ULTIMO_EXPEDIENTE,
LAG(TABLA) over(partition by ID_EXPEDIENTE order by orden) ULTIMA_TABLA,
LAG(TIPO_ESTADO) over(partition by ID_EXPEDIENTE order by orden) ULTIMO_ESTADO,
LAG(FECHA_ESTADO) over(partition by ID_EXPEDIENTE order by orden) ULTIMA_FECHA,
LAG(ID_EXPEDIENTE,2) over(order by ID_EXPEDIENTE,orden) INMANT_EXPEDIENTE,
LAG(TABLA,2) over(partition by ID_EXPEDIENTE order by orden) INMANT_TABLA,
LAG(TIPO_ESTADO,2) over(partition by ID_EXPEDIENTE order by orden) INMANT_ESTADO,
ID_ESTADO,
ID_EXPEDIENTE,
TABLA,
TIPO_ESTADO,
orden,
anio,
fecha_estado,
NUMERO_EXPEDIENTE,
ANIO_EXPEDIENTE,
NATURALEZA_EXPEDIENTE,
ID_OFICINA,
DESCRIPCION,
ID_TIPO_INSTANCIA,
ID_OBJETO_JUICIO,
DESC_OBJETO_JUICIO,
FECHA_INICIO,
ID_EXPEDIENTE_ORIGEN,
CARATULA_EXPEDIENTE
from EST_ESTADOS_CIVIL e where TABLA like 'R%' and ANIO between 2012 and
2016
我想知道如果比较这样的游标中的值会更快,比如TIPO_ESTADO = ULTIMO_ESTADO
或单独使用查询并从变量中获取LAG值并进行比较。
请记住,更改此项会将我的查询从280.000行更改为300万行。
我可以保留280.000行但我至少需要包含一个或两个LAG列
答案 0 :(得分:2)
与所有关于性能的问题一样,您可以测试代码以查看哪个更好。
至于我的观点,我甚至不会考虑使用游标来提高性能。基于集合的数据操作应该更好。
注意:如果您使用光标,则需要一个order by
,这可能会扼杀您可能认为会获得的预期性能提升。