Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

select distinct ne radi, a obicni select radi (!?)

[es] :: MS SQL :: select distinct ne radi, a obicni select radi (!?)

[ Pregleda: 2280 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

M E N E
borislav
Temerin

Član broj: 30434
Poruke: 231
*.static.isp.telekom.rs.



+1 Profil

icon select distinct ne radi, a obicni select radi (!?)22.10.2009. u 14:40 - pre 176 meseci
Imam jedan, manje vise, uobicajen select iz trostrukog JOINa.Radi bez ikakvih problema.
Izvlacim tacno jedno polje (ID jedne od tabela koje su u JOINu) i imam jednostavan WHERE uslov

SELECT T1.ID from ...
vraca za jedan sekund 206 rezultata

SELECT DISTINCT T1.ID from...
zakucava, upadne u lock i ne vrati nista ni posle 10 minuta...

nisam hteo da kucam ovde sam skript, ili joinove, nego bih voleo da mi neko kaze uopsteno, zbog cega se ovako nesto moze desiti?
:-(

Uhvatili ste me nespremnog
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
82.117.202.*



+171 Profil

icon Re: select distinct ne radi, a obicni select radi (!?)22.10.2009. u 14:54 - pre 176 meseci
Deluje cudno. Ja bih rekao da je razlika u tome sto je SELECT DISTINCT skuplja operacija od SELECT, ali s obzirom da imas 206 zapisa onda to otpada, razlike bi bile zanemarljive u malom broj slucajeva, jedino ako ti ID nije nvarchar(max), ili tako nesto egzoticno
 
Odgovor na temu

M E N E
borislav
Temerin

Član broj: 30434
Poruke: 231
*.static.isp.telekom.rs.



+1 Profil

icon Re: select distinct ne radi, a obicni select radi (!?)22.10.2009. u 14:59 - pre 176 meseci
ID je int
Jedna tabela ima 20k zapisa, treca ima oko 80k zapisa, a ova izmedju svega desetak
ne znam da li igra ulogu kako sam joinovao tabele, jer on prolazi - vraca mi rezultate besprekorno brzo i tacno, samo ako ne stavim distinct.
Join je 1 na 1, jednom redu prve odgovara jedan red trece tabele, druga (najmanja) sluzi samo za vezivanje prve i trece.
Uhvatili ste me nespremnog
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
82.117.202.*



+171 Profil

icon Re: select distinct ne radi, a obicni select radi (!?)22.10.2009. u 15:25 - pre 176 meseci
Nisam siguran, ali deluje logicno da posle svih joinova se radi distinct. Probaj da vratis sa podupitom rezultat, mozda se query optimizer zakuca, mada to je isto malo verovatno

Code:

SELECT DISTINCT ID from
(SELECT T1.ID from...)


E da, javi samo rezultat, bas me zanima sta je uzrok ovome.
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
82.117.202.*

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: select distinct ne radi, a obicni select radi (!?)22.10.2009. u 15:30 - pre 176 meseci
Ako vracas samo jednu (ili mali broj) kolonu pokusaj sa gruop by umesto distinct (doduse trebalo bi da generisu isti plan ali probaj). Takodje mozda mozes da rewrite-ujes upit sa where exists (primer: http://www.sql-server-performa...elect_distinct_queries_p1.aspx ).
Every hamster has his day.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: select distinct ne radi, a obicni select radi (!?)22.10.2009. u 16:25 - pre 176 meseci
Cek samo malo, ako sam shvatio ti imas 1-1 relaciju preko link tabele? Ako smem da pitam sto si to tako radio, zasto ne direktna relacija?

Isto malo mi je cudno da u toj 1-1 konfiguraciji distinct vraca manje rezultata, da bi se neki ID duplirao i time bio podlozan distinct-u kroz join mora da postoji many-to-0/1 u kom slucaju ti je onda poslovna logika zakazala i dozvolila unos podatka koji nije 1-1 .

U svakom slucaju baci nam ovde ako mozes estimated plan za distinct i actual plan za bez distinct-a, distinct bi trebao da je finalni filter na planu, ne bi trebao da utice na ostatak plana.

Isto sto mozes da uradis je da dok cekas tih 10 minuta pogledas ko ti drzi lockove na objekte, tvoj query moze da ima samo IS i S lockove i bar jedan je u WAIT stanju, pogledaj koji drugi proces drzi granted lock na istom resursu i vidi oklen on
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: MS SQL :: select distinct ne radi, a obicni select radi (!?)

[ Pregleda: 2280 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.