Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 2.588 pregleda

Najnovija ↓

Razlika u vremenu obrade 15.08.2011. u 18:05 · pre 185 meseci #1
Imam dve tabele sa istim karakteristikama, samo sa razlicitim imenima kolona, svaka tabela ima oko 20000 zapisa
kada formiram izvestaj o redovima koje ima tabela1, a nema tabela2 izvestaj dobijam odma:
Select * from tabela1 where id_t1 not in (select id_t2 from t2)

Ali, kada formiram izvestaj o redovima koje ima tabela2, a nema tabela1 izvestaj cekam dosta dugo.
select * from tabela2 where id_t2 not in (select id_t1 from t1)

tabela1:
id_t1 - varchar(4), PK
naslov - varchar(80)

tabela2:
id_t2 - varchar(4), PK
naslov - varchar(80)

U cemu moze da bude problem?

Koristim MySQL 5.5, InnoDB

Hvala!
Re: Razlika u vremenu obrade 15.08.2011. u 19:56 · pre 185 meseci #2
Problem je sa WHERE IN i treba ga zaobilaziti kad god se može.

Mnogo efikasnije rešenje ti je sa JOIN.
Ovaj će ti vratiti sve što ima u t1 a nema u t2:
Code:

SELECT 
  t1.Id
FROM
  t1
  LEFT OUTER JOIN t2 ON (t1.Id = t2.Id)
WHERE
  t2.Id IS NULL

Pozdrav
Re: Razlika u vremenu obrade 15.08.2011. u 20:54 · pre 185 meseci #3
Probao sam upit sa JOIN, ali on je jos sporiji od WHERE IN!

Kad trazim sta nedostaje u t2 uradi za 0.05sec, a obrnuto oko 2min. Stvarno mi nije jasno u cemu je problem...
Re: Razlika u vremenu obrade 15.08.2011. u 21:47 · pre 185 meseci #5
Pokazao je razlike u polju type. Obrisao sam tabelu2, kreirao je ponovo, napunio zapisima i sad sljaka odlicno!

Hvala puno!!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme