Estoy trabajando con un cliente que inicia casi todas sus cláusulas WHERE en Oracle con 1=1
. Perdona mi ignorancia, pero ¿no es esto una no-operación? ¿Hay alguna consecuencia negativa de este uso?En Oracle, ¿está comenzando la cláusula WHERE de SQL Query con 1 = 1 útil?
Aquí está un ejemplo fregado:
SELECT gpz.zname
,gpp.pname
FROM table1 gpp INNER JOIN table2 gpz ON gpz.p_id = gpp.p_id
WHERE 1=1
AND gpp.active = 1
AND gpz.active = 1
+1 para la pereza, la simplificación de la PL/SQL por una o dos líneas e infligir este tipo de SQL en la base de datos es bastante pobre. Es una lástima si por alguna razón necesitan establecer cursor_sharing = FORCE - no estoy seguro, pero creo que CBO se enfrentará con "WHERE: 1 =: 2 AND ..." ¡y lo optimizará en consecuencia! Sé interesante para averiguar ... –
Sospeché que este era el caso. Este cliente realmente tiene consultas no dinámicas como esta también. Son realmente vagos :) – Blanthor
@JeffreyKemp Según [T-SQL 1 = 1 Performance Hit] (http://stackoverflow.com/q/1049512), el DBMS no tiene un impacto en el rendimiento al usar este patrón. –