Sto lavorando con un client che avvia quasi tutte le clausole WHERE in Oracle con 1=1
. Perdona la mia ignoranza, ma non è un no-op? Ci sono conseguenze negative di questo utilizzo?In Oracle, si sta avviando la clausola WHERE di SQL Query con 1 = 1 utile?
Ecco un esempio fregati:
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 per pigrizia, semplificando il PL/SQL da una o due linee e questo tipo di SQL sul database è piuttosto scarso. Peccato se per qualche ragione hanno bisogno di impostare cursor_sharing = FORCE - non sono sicuro, ma penso che il CBO si troverebbe di fronte a "WHERE: 1 =: 2 AND ..." e lo ottimizzerà di conseguenza! Sii interessante scoprire ... –
Sospettavo che fosse così. Questo client ha effettivamente query non dinamiche come questa. Sono davvero pigri :) – Blanthor
@JeffreyKemp Secondo [T-SQL 1 = 1 Performance Hit] (http://stackoverflow.com/q/1049512), il DBMS non subisce un calo di prestazioni utilizzando questo modello. –