Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy te zapytanie jest "optymalne" ?
scanner
post 17.10.2002, 11:19:03
Post #1





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Witam. To moj pierwszy post na forum. W sumie mógłbym go nawet nie pisać, ale lepiej nie mieć zerowego konta (podobno zerówki będą kasowane smile.gif ) a pozatym, wolę się upewnić w moich wątpliwościach.
W czym rzecz:
Tworzę stronę dla pewnej ligi piłkarskiej (http://www.alpn.prv.pl - jakby ktoś był ciekawy). I przyszło do stworzenia tabeli fer-play. Czyli zliczyc zolte i czerwone kartki kazdego zawodnika, pogrupowac ich wedlug druzyn, i obliczyc punkty dla kazdej druzyny.

Mam dwie tabele, jak stoi ponizej.

Kod
CREATE TABLE alpn_druzyny (

  id_teamu int(10) unsigned NOT NULL auto_increment,

  nazwa varchar(255) NOT NULL default '',

  rozegrane int(11) NOT NULL default '0',

  liga set('I','II') NOT NULL default '',

  bramki_strzelone int(10) unsigned NOT NULL default '0',

  bramki_stracone int(10) unsigned NOT NULL default '0',

  wygrane int(11) NOT NULL default '0',

  remisy int(11) NOT NULL default '0',

  przegrane int(11) NOT NULL default '0',

  punkty int(10) unsigned NOT NULL default '0',

  PRIMARY KEY  (id_teamu)

) TYPE=MyISAM;



CREATE TABLE alpn_zawodnicy (

  id_zawodnika int(10) unsigned NOT NULL auto_increment,

  id_teamu int(10) unsigned NOT NULL default '0',

  nazwisko varchar(255) NOT NULL default '',

  pozycja set('Bramkarz','Obrońca','Pomocnik','Napastnik') NOT NULL default '',

  bramki int(11) NOT NULL default '0',

  bramki_samobojcze int(11) NOT NULL default '0',

  zolte int(10) unsigned NOT NULL default '0',

  czerwone int(10) unsigned NOT NULL default '0',

  pauzuje_od int(11) NOT NULL default '0',

  pauzuje_do int(11) NOT NULL default '0',

  PRIMARY KEY  (id_zawodnika)

) TYPE=MyISAM;


Po dluższym myśleniu, wykombinowałem coś takiego:

Kod
SELECT SUM(alpn_zawodnicy.zolte) AS k_zolte, SUM(alpn_zawodnicy.czerwone) AS k_czerwone, (SUM(alpn_zawodnicy.zolte)*3+SUM(alpn_zawodnicy.czerwone)*6) AS punkty, alpn_druzyny.liga, alpn_druzyny.nazwa

FROM alpn_zawodnicy, alpn_druzyny

WHERE liga='I' AND alpn_zawodnicy.id_teamu=alpn_druzyny.id_teamu

GROUP BY alpn_zawodnicy.id_teamu

ORDER BY punkty DESC


I teraz tak. wyniki wygladaja bardzo dobrze, aż sam się dziwię, ale mam pytanie - czy te zapytanie jest OK, czy mozna je w jakis sposob zoptymalizowac? Bo napisac można wszystko, ale nie wszystko musi działąć optymalnie..

I o to własnie pytam - czy to jest optymalne?

A pytam Was dlatego, że strona ALPN to jest pierwszy projekt, w którym stosuję aż tak (lame...) skomplikowane zapytania. I szczerze powiedziawszy jesli sie okaże że te bazgroły powyżej są ok. bedę mogł przepisać kilka innych selectów, które robiłem "aby były" winksmiley.jpg


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.07.2025 - 23:07