Autor Zpráva
tatyalien
Profil
Dobrý den,
už jsem si rozchodil starý dotaz z vlákna: Odkaz.

Jenže, tam to řeším, že si jeden dotaz uložím do pomocné tabulky export_zmen a pak na něj nalepuji další dotaz do db.

Chci se zeptat, jde to nějak zjednodušit?

Výsledný dotaz mám zatím tento:
SELECT * 
FROM export_zmen
UNION SELECT goods_opravena . * 
FROM export_zmen, goods_opravena
WHERE export_zmen.indexa = goods_opravena.indexa
AND goods_opravena.cenovahladinaid != ""
ORDER BY IndexA


Tabulku export_zmen vytvarim dotazem:
SELECT
Priznak, IndexA, Nazev, Tvurce, TypTvurce, Popis, KratkyPopis, WWWadressa, Jednotka, Oddeleni, Obrazky, Nahled, Nomenklatura, NaSklade, Dan, CenaSDani, DodaciLhuta, CenovaHladinaID, CenovaHladinaPopis, CenovaHladinaAlg, RodicovskaKarta, SdruzovaniPolozek, ReferencovanaKarta
FROM goods_opravena WHERE 
(Priznak, IndexA, Nazev, Tvurce, TypTvurce, Popis, KratkyPopis, WWWadressa, Jednotka, Oddeleni, Obrazky, Nahled, Nomenklatura, NaSklade, Dan, CenaSDani, DodaciLhuta, CenovaHladinaID, CenovaHladinaPopis, CenovaHladinaAlg, RodicovskaKarta, SdruzovaniPolozek, ReferencovanaKarta)
NOT IN 
(SELECT 
Priznak, IndexA, Nazev, Tvurce, TypTvurce, Popis, KratkyPopis, WWWadressa, Jednotka, Oddeleni, Obrazky, Nahled, Nomenklatura, NaSklade, Dan, CenaSDani, DodaciLhuta, CenovaHladinaID, CenovaHladinaPopis, CenovaHladinaAlg, RodicovskaKarta, SdruzovaniPolozek, ReferencovanaKarta  
FROM goods_zdroj) UNION SELECT 
Priznak, IndexA, Nazev, Tvurce, TypTvurce, Popis, KratkyPopis, WWWadressa, Jednotka, Oddeleni, Obrazky, Nahled, Nomenklatura, NaSklade, Dan, CenaSDani, DodaciLhuta, CenovaHladinaID, CenovaHladinaPopis, CenovaHladinaAlg, RodicovskaKarta, SdruzovaniPolozek, ReferencovanaKarta
FROM nove_zbozi ORDER BY IndexA


a já bych potřeboval, abych do nynějšího kódu zaměnil dotaz na tabulku export_zmen na dotaz cogeneruje tabulku změn.
Kajman_
Profil *
Ono to ale může být pomalejší než s vytvářením mezitabulky, musíte si to změřit...

SELECT * 
FROM (select ten dlouhy) as export_zmen
UNION SELECT goods_opravena . * 
FROM  (select ten dlouhy) as export_zmen, goods_opravena
WHERE export_zmen.indexa = goods_opravena.indexa
AND goods_opravena.cenovahladinaid != ""
ORDER BY IndexA


Také si ten dlouhý select můžete uložit jako view s názvem export_zmen.
tatyalien
Profil
Kajman_
u obou exportů mě to trvá cca 1s (zaokrouhleno nahoru), pokud by to bylo o chvilku dyl, tak by mě to srdce nedrásalo.

Pokud bych si to uložil jako view, jde to pak nějak na to i napojit? Dotaz dávám přez phpko, které mě pak výsledek ukládá do csv.

jdu zkusit zatím těn dotaz co jste psal
// edit tak tento dotaz mě zabral -> Dotaz zabral 3.1268 sekund
Kajman_
Profil *
Jednou si uděláte view, které si bude pamatovat, že je to ten dlouhý dotaz a můžete s ním pracovat podobně jak s tabulkou. Např.
create view export_zmen as SELECT Priznak, IndexA... 

Jinak si myslím, že ty dva dotazy, jak máte teď, by mohly být stále rychlejší než rešení s view.
tatyalien
Profil
Kajman:
Ok, děkuji za pomoc ;).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: