Optimization válasszuk külön

(A cikk szerint Neil Boyle a swynk.com "Speed ​​up SELECT egyedi lekérdezések")

Neil azt mondja, hogy sokan használják KÜLÖNÁLLÓ opciót a SELECT kiszűrni másolatokat. Például egy egyszerű kérés a PUBS adatbázis:

válassza KÜLÖNÁLLÓ
au_fname,
au_lname
szerzőktől

válassza KÜLÖNÁLLÓ
au_fname,
au_lname
szerzőktől származó join titleAuthor t
a t.au_id = a.au_id

válasszuk au_fname, au_lname
szerzőktől a
ahol létezik (
select *
a titleAuthor t
ahol t.au_id = a.au_id
)

válassza KÜLÖNÁLLÓ o.name
származó sysobjects o
csatlakozzon sysindexes i
a o.id = i.id
ahol o.type = 'U'

válassza o.name
származó sysobjects o
ahol o.type = 'U'
és létezik (
1 válassza
származó sysindexes i
ahol o.id = i.id
)

Meg kell érteni a jellemzői az unió két (vagy több) asztalok, hogy használja a hatékony végrehajtását. A következő két lekérdezéseket a Northwind adatbázis célja, hogy visszatérjen az ügyfél azonosító, amely elindult több mint 2 százalékkal bármilyen helyzetben. Első pillantásra ezek ugyanúgy viselkednek, mint az előző példában (lekérdezés hasonló formátumok), de a tényleges eredményeket érhetünk el mások.

válassza KÜLÖNÁLLÓ customerID
megrendelésekből o
join [sorrendben részletek] od
a o.OrderID = od.OrderID
ahol kedvezmény> 0,02

válassza customerID megrendelésekből o
ahol létezik (
select *
Az [megrendelés részleteit] od
ahol o.OrderID = od.OrderID
és kedvezményes> 0,02
)

A különbség végrehajtásának hatékonyságát ezeknek kéri, hogy a Rendeléskód, amely meghatározza a kapcsolat a két tábla között, és nem az ügyfél neve. A második lekérdezés visszatér a beállított nevét az ügyfél - egy minden helyzetben elő az ügyfél. Próbálja meg hozzáadni a Rendeléskód oszlop a SELECT listában látni.