Novo

Forum kao aplikacija na telefonu

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

  • 2 odgovora
  • 3.084 pregleda

Najnovija ↓

Problem sa optimizacijom upita 02.12.2005. u 02:15 · pre 254 meseca #1
Imam problem sa optimizacijom SQL upita, pa ti hosting vec po drugi put iskljucuje sajt.

Imam tabelu korisnici koja cuva registrovane korisnika. Trenutno ima oko 6000 zapisa.
Imam tabelu ocene u koju se cuvaju ocene koji korisnici dobijaju i ona ima oko 700.000 zapisa.
Prilikom prikazivanja slika korisnika na sajtu, slike se biraju RANDOM. Posto su se korisnici sajta zalili kako im se ne svidja to sto se slike ponavljaju resio sam da kreiram joj jednu tabelu ocenjene_slike koja cuva za svakog korisnika koju slika mu se prikazuje. Kada korisnik oceni necu sliku izvrsavali bi se sledeci upiti.
1. U tabeli ocene bi se dodao nivi zapis.
2. izvrsava se select upit nad tabelom korisnici kako bi se korisniku prikazala sledeca slika

taj upit izgleda ovako
select id,korisnik,... from korisnici where ((select count(*) from ocenjene_slike where korisnici.id=osobaID and " & lbKorisnikID.Text & "=logovanaOsobaID)=0
da pojasnim samo malo, OsobaID je ID ocenjenog korisnika u tabeli ocenjene_slike i logovanaOsobaID je ID korisnika koji ocenjuje.

ovaj podupit sam napravio samo sa ciljem da bi se izbeglo ponavljanje slika. Medjutim pretpostavljam da on previse opterecuje server. Da li moze da se resi ovaj problem? Da li bi problem bio resen ako bi koristio NOT IN klauzu?






Potpis
www.zaljubise.net - najbolji sajt za upoznavanje
Re: Problem sa optimizacijom upita 02.12.2005. u 09:12 · pre 254 meseca
izmenjeno 1 put, poslednji put negyxo 02.12.2005. u 09:14
  1. negyxo02.12.2005. u 09:14zapis iz teksta poruke
#2
Malo si konfuzan ovim pitanjem ali sva sreca sajt ti vise govori :)

Prvo, ako vec mislis da ti query radi sporo proteraj Profiler pa vidi koliko mu treba vremena pa onda uporedi sa nekim drugim query-jem.


Code:

SELECT 
    id,
    ...
FROM 
    Korisnici
    LEFT JOIN (SELECT * FROM Ocenjene_Slike WHERE logovanaOsobaID = @idOsobe) AS OS ON OS.osobaID = Korisnici.id
WHERE
    OS.osobaID IS NULL


Code:

SELECT 
    id,
    ...
FROM 
    Korisnici    
WHERE
    id NOT IN (SELECT OsobaID FROM Ocenjene_Slike WHERE logovanaOsobaID = @idOsobe)

@idOsobe je parametar, pa nemoj da te to buni njega bolje prosledi nego da spajas stringove
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme