È questo un nuovo modello comune in Oracle Dove esiste (selezionare NULL DA ...)?


8

Anni fa, era normale scrivere

where exists (Select * from some_table where some_condition)

L'anno scorso ho notato che molti script t-sql sono passati all'utilizzo del numero 1 anziché della stella

where exists (Select 1 from some_table where some_condition)

proprio su SO ho visto questo esempio Oracle

WHERE EXISTS (SELECT NULL FROM ...

È un modello comune con Oracle? E quali sono gli argomenti di prestazione per usare qualcosa del genere.


Risposte:


6

Risposta breve: spero di no!

Anche il SELECT 1linguaggio potrebbe essere sopravvissuto alla sua utilità, poiché i motori di database sono abbastanza avanzati per riconoscere che non si vogliono davvero le righe, si vuole solo sapere se le righe esistono. Ho guardato i piani di esecuzione in SQL 2005, e in genere hanno visto questi ri-scritti come si unisce, anche quando SELECT *viene utilizzato.


5

In Oracle non ha importanza le prestazioni. Puoi anche inserire 1/0 lì e l'istruzione non restituirà una divisione per errore zero perché l'espressione non viene valutata.


1
Questo deve essere chiuso a favore dell'affidamento alla domanda SO? È uno di quelli "migra il SO su dba.SE"?
jcolebrand
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.