Forum » Programiranje » Pomoč pri SQL
Pomoč pri SQL
nokaut240 ::
SELECT AVG(t.stevilo) AS povprecje FROM(SELECT a.aid, COUNT(i.pid) AS stevilo FROM aliansa a, igralec i WHERE a.aid=i.aid GROUP BY a.aid) t
Notranji SELECT stavek mi prešteje število pid-ov (count(i.pid)) ki pripadajo določeni aliansi(a.aid) in jih grupira. Dobimo id alianse in število pidov, ki tej aliansam pripadajo. Zunanji select stavek izračuna povprečno število pidov na alianso. Zdaj bi pa rad, da izpiše samo id-je tistih alians (a.aid oz. t.aid), ki imajo število pidov (t.stevilo) večje kot je povprečje. Probavam in probavam, pa mi program vedno zateži, da narobe grupiram in podobno. Če lahko kdo dopolne to kodo, naj mi jo kar pošlje preko ZS (zaradi "varnostnih" razlogov :D ).
nokaut240 ::
Pospešite izvajanje počasnih poizvedb s kreiranjem ustreznih indeksov (CREATE
INDEX). Svoje predloge dokumentirajte s faktorji pohitritve in jih utemeljite.
Tole mi ni jasno kako naredit, ker nisem še nikoli počel kaj takega. Lahko kdo vsaj en primer napiše, če imamo te tabele:
pleme(tid, tribe)
aliansa(aid, alliance)
igralec(pid, player, #tid, #aid)
naselje(id, x, y, vid, village, population, #pid)
INDEX). Svoje predloge dokumentirajte s faktorji pohitritve in jih utemeljite.
Tole mi ni jasno kako naredit, ker nisem še nikoli počel kaj takega. Lahko kdo vsaj en primer napiše, če imamo te tabele:
pleme(tid, tribe)
aliansa(aid, alliance)
igralec(pid, player, #tid, #aid)
naselje(id, x, y, vid, village, population, #pid)
gokky ::
Primarni ključi so v splošnem prvi kandidat za indeksiranje. Zunanji ključi so naslednji (lahko tudi v kombinaciji). Za pohitritev gornjega stavka pa indeks nad aliansa(aid) (PK) in igralec(aid) (FK).
Ni pa vedno nujno, da je indeks bolj optimalen. Recimo, da imaš v stolpcu X ene tabele naslednje vrednosti: 1E6 krat po 'a' in 10 krat 'b'. Potem pomeni indeks, ko iščeš vrednost po where x='a' samo dodaten praktično neuporaben korak. Cost-based optimizerji se znajo termu izogniti, na rule-based pa mora DBA/razvojnik misliti.
Ni pa vedno nujno, da je indeks bolj optimalen. Recimo, da imaš v stolpcu X ene tabele naslednje vrednosti: 1E6 krat po 'a' in 10 krat 'b'. Potem pomeni indeks, ko iščeš vrednost po where x='a' samo dodaten praktično neuporaben korak. Cost-based optimizerji se znajo termu izogniti, na rule-based pa mora DBA/razvojnik misliti.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Podatkovne baze relacijska algebra - problemOddelek: Programiranje | 929 (835) | techfreak :) |
» | [Sql] VprasnjiOddelek: Programiranje | 790 (686) | Tody |
» | MySQL Query VprašanjeOddelek: Izdelava spletišč | 3214 (2979) | overlord_tm |
» | problem v C#Oddelek: Programiranje | 1969 (1684) | dvojka |
» | [MySql] obratno od DISTINCTOddelek: Programiranje | 1450 (1268) | frudi |