Topic: Labai ilgai vykdoma...

Sveiki, gal kas gali patobulinti?

select DISTINCT DATE_FORMAT(date(Laikas), "%Y-%m-%d") as newdate , Kompas from logas
where (Vartotojo_id = "1") or (Kompas in 
(select DISTINCT Kompas from logas where Vartotojo_id = "1")) ORDER BY date(Laikas) DESC

Re: Labai ilgai vykdoma...

Pats išsprendžiau...

select DISTINCT DATE_FORMAT(date(Laikas), "%Y-%m-%d") as newdate , Kompas from logas
 
INNER JOIN ( 
(select DISTINCT Kompas as Kitas from logas where Vartotojo_id = "378") as Kompas)  

where Vartotojo_id = "378"

ORDER BY date(Laikas) DESC

Re: Labai ilgai vykdoma...

Na reiktų vengti subužklausų, geriau jei pavyksta naudoti JOIN. Taip pat reiktų susižiūrėti ar su indeksais viskas ok.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

4 (edited by Neodan 2012-05-13 19:06:05)

Re: Labai ilgai vykdoma...

Arba veikimo logika neteisingai realizuojama arba db neteisingai suprojektuota. Sunku ka tikslei pakomentuoti, kai neaisku nei kas, nei kaip tan pas tave.

P.S. Praverstu laikytis kodo rasymo kulturos, o tai dabar vienos komandos mazosiomis, kitos didziosiomis raidemis rasomos.
P.P.S. Siaip greiciausiai tai ko tau reikia: MAX ir GROUP BY (tavim detas netingeciau pasimokynt MySQL) (-;

Re: Labai ilgai vykdoma...

vlkc wrote:

Pats išsprendžiau...


select DISTINCT DATE_FORMAT(date(Laikas), "%Y-%m-%d") as newdate , Kompas from logas

INNER JOIN (
(select DISTINCT Kompas as Kitas from logas where Vartotojo_id = "378") as Kompas) 

where Vartotojo_id = "378"

ORDER BY date(Laikas) DESC

1) Man rodos sub-užklausa pas tave nereikalinga iš viso:

SELECT DISTINCT DATE_FORMAT(date(Laikas), "%Y-%m-%d") AS newdate,
  Kompas
FROM logas
WHERE Vartotojo_id = "378"
ORDER BY date(Laikas) DESC

2) stulpelis Vartotojo_id turi būti sveikas skaičius, todėl kabutės nereikalingos, arba reikia pakeisti stulpelio tipą;
3) reikia papildomo stulpelio newdate, į kurį įrašymo metu iš karto įrašytum reikiamus duomenis, kad nereikėtų traukiant su SELECT visada dinamiškai keisti formatą;
4) reikia kombinuoto indekso ant stulpelių Vartotojo_id ir Laikas'
5) ...