Autor | Zpráva | ||
---|---|---|---|
Jen Profil * |
#1 · Zasláno: 3. 12. 2006, 19:49:22
Mám problém při následujícím sql dotazu:
select COUNT(*) as pcount FROM products AS p LEFT JOIN prices ON p.pnumber = prices.pnumber LEFT JOIN vendors ON p.pvendor = vendors.vid,groups WHERE p.pgroup = groups.skupinaID AND vendors.vid = 310 AND prices.priceMVAT >= 0 AND prices.priceMVAT <= 100 provedení dotazu trvá okolo dvou vteřin. Čím to může být způsobené? Indexy používám. Prosím o pomoc, děkuji. |
||
Časová prodleva: 5 dní
|
|||
peta Profil |
#2 · Zasláno: 8. 12. 2006, 13:25:09
Spatne naklicovani - indexy?
"Indexy používám." Kdo vi jak, ale jeste mne napada rozsah tabulky - radku nebo sloupcu nebo klicu. Jinak podle dotazu by museli byt klice: p.pnumber = prices.pnumber p.pvendor = vendors.vid,groups p.pgroup = groups.skupinaID vendors.vid = 310 prices.priceMVAT >= 0 prices.priceMVAT <= 100 cili tabulka prices: priceMVAT tabulka vendors: vid tabulka products: pgroup, pvendor, pnumber tabulka groups: skupinaID Asi to neni uplne dobre, ja moc grupovani nepouzivam, ale princip je myslim zrejmy. Mit zaklicovane vse, co se casto pouziva, hlavne u rozsahlych udaju. Dobre je zaklicovat prvni jednoduche male udaje, pak tabulka s klici nezabira tolik mista. Take je dobre davat prvni WHERE na jednodussi klice nebo ty, ktere odrezou vetsi skupinu udaju, pokud to jde. Kdyz budes mit dotaz takovy, ze spojujes 3 rozsahle tabulky a hned u prvni mas spatne klice, tak nez ji vyhleda, si pockas. Pak to musi jeste porovnat s dalsi, kde take nemas spravne klice, takze porovnava more udaju s morem dalsich udaju pres celou delku tabulky... To mas pak tezky :) |
||
Časová prodleva: 6 dní
|
|||
peta Profil |
#3 · Zasláno: 14. 12. 2006, 07:55:19
podobny dotaz:
Diskuse » Databáze na webu » Jak v SQL dotazu využít indexy? http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=3 9728 |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0