Autor | Zpráva | ||
---|---|---|---|
tatyalien Profil |
#1 · Zasláno: 26. 1. 2010, 12:14:46
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 co mě generuje tabulku změn. |
||
Kajman_ Profil * |
#2 · Zasláno: 26. 1. 2010, 12:21:40
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 |
#3 · Zasláno: 26. 1. 2010, 13:36:31 · Upravil/a: tatyalien
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 * |
#4 · Zasláno: 26. 1. 2010, 15:19:52
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 |
#5 · Zasláno: 26. 1. 2010, 16:04:45
Kajman:
Ok, děkuji za pomoc ;). |
||
Časová prodleva: 13 let
|
0