stand competitie uitrekenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer

Functie omschrijving Net afgestudeerd en op zoek naar een leuke baan als developer? Zoek niet verder! Ik heb een functie beschikbaar als back-end developer, bij een leuk familiebedrijf. Je gaat werken met de Microsoft stack en de technieken C# en .NET. Verder maak je gebruik van MVC en Entity framework. SQL kent ook geen geheimen voor jou. Jouw verantwoordelijkheden: Nieuwe maatwerk software bouwen; API koppelingen bouwen; Applicaties en software optimaliseren; Back-end programmeren. Een erg uitdagende functie, met veel vrijheid. Je kan meerdere dagen thuis werken en als je op kantoor werkt wordt de lunch verzorgd. Heb je interesse, reageer dan

Bekijk vacature »

PHP back-end developer gezocht!

Functie Werk je liever zonder druk en keiharde deadlines maar met de focus op kwaliteit? Dan kom je hier op de juiste plek terecht! In Het team bestaat momenteel uit 12 developers, hiernaast werken er collega’s van front-end, UX maar ook marketing/sales en support. In iedere sprint ontwikkel je samen functionaliteiten met als uitdaging om de klanten de beste gebruikerservaring te bieden. Ze bieden een werkplek waar je jezelf kunt blijven ontwikkelen, en mee te werken aan zowel bestaande als nieuwe mogelijkheden. Eisen • HBO werk- en denkniveau (ze kijken niet naar een papiertje) • Je denkt graag mee over

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »

Front-end developer (Angular)

Functie Het team bestaat uit een architect, fullstack developers, app developers, de product owner en projectmanager. Eenieder draagt vanuit zijn discipline bij aan een complete oplossing voor de klant. Uiteraard zul je hierin nauw samenwerken met je collega’s. Jij wordt verantwoordelijk voor de front-end implementatie en fungeert als lead op dit gebied binnen het team. Je kunt helder formuleren, ideeën uitdragen en overbrengen aan je collega’s. Qua technische stack is het vooral van belang dat je ervaren bent met Angular, HTML5, CSS en TypeScript. Verder is ervaring in NgRx, Bootstrap, BEM en Cypress een pré, evenals affiniteit met UX/UI Design!

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en staan

Bekijk vacature »

Software ontwikkelaar ASP .Net / C#

Functie omschrijving Gezocht! Software ontwikkelaar. Ben jij bekend met termen als ASP .Net, C# en SQL? Ben jij op zoek naar een afwisselende en uitdagende IT-functie binnen de agrarische sector? En omschrijf jij jezelf als zelfstandig, enthousiast en proactief? Dan hebben wij de perfecte functie voor jou! Als Software ontwikkelaar binnen deze organisatie ben je samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Je gaat hierbij bijdragen aan de vertaling van klantwensen naar effectieve softwareoplossingen. Verder bestaan je werkzaamheden uit: Technische uitwerking van de business

Bekijk vacature »

Java Developer

Dit ga je doen Het ontwikkelen van nieuwe software; Het ombouwen van de bestaande software; Zowel back- als front-end software ontwikkelen; Het testen; Het implementeren van de volledig geteste software; Het verzorgen van nazorg en het oplossen van bugs; Het opstellen en bijhouden van procesdocumentatie; Je draagt bij aan het agile/scrum processen van het team. Hier ga je werken Ongetwijfeld heb je een of meerdere producten van deze organisatie in huis. Het proces erachter, daar ben je ongetwijfeld minder bekend mee. Deze opdracht geeft je de kans meer over dit proces te weten te komen en een mooie bijdrage te

Bekijk vacature »

Java (Java EE) Developer

In het kort Werken als Java developer betekent werken aan complexe IT projecten bij onder meer een internationaal containeroverslag bedrijf. Zo sturen we apparaten en eindgebruikers aan d.m.v. onze custom-made software oplossing, die dagelijkse vele duizenden containers verwerkt. Denk aan systemen die volautomatische kranen aansturen en op afstand bedienen, de volledige afhandeling van containernummerherkenning bij het laden en lossen van zeeschepen of het tonen van instructies aan de chauffeurs van ruim 300 straddle carriers. En dat allemaal redundant, robuust en in een dynamische 24/7 omgeving! Jij versterkt ons ontwikkelteam en gaat aan de slag met oa. Java i.c.m. Spring (Boot),

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een erkende werkgever in de regio van Goes zijn wij op zoek naar een enthousiaste software programmeur met PHP/Symfony ervaring. Een gedreven persoon die het development team komt versterken met het aanpakken van complexe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel professionele als persoonlijke groei? Lees dan snel verder! Dit ga je doen: Beheer en ontwikkeling van de serviceportal in Symfony en de webshops in de tweede versie van Magento; Testen en door ontwikkelen van software; Ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

Bekijk vacature »

PHP Back-end Developer

Vacature details Vakgebied: Software/IT Opleiding: Starter Werklocatie: Nijmegen Vacature ID: 13633 Introductie OUr client develop websites, webshops, and digital environments that are used by many visitors daily. They are seeking an experienced PHP-Developer Back-end to join the team. If you're looking for a position where you can tackle challenging, innovative, and multidisciplinary ICT projects and make a difference, this vacancy might be for you! Functieomschrijving As a PHP developer, you'll develop websites and digital environments used by many visitors daily. You'll work as a back-end developer and want to continuously develop in this field. You can work independently and efficiently,

Bekijk vacature »

Ontwikkelaar MS Dynamics 365 Projecten

Samengevat: Deze werkgever is de kwaliteitsdienst in de tuinbouwsector. Ben jij een ervaren ontwikkelaar? Heb jij ervaring met Ms Dynamics 365 BC? Vaste baan: Ontwikkelaar Ms Dynamics 365 BC ICT MBO 3.500 - 5.000 Ontwikkelaar Ms Dynamics 365 BC Ons bedrijf bewaakt en bevordert de kwaliteit van producten, processen en ketens in de tuinbouw. Wij kenmerken zich door openheid, ruimte voor initiatief, collegialiteit en zelfontplooiing. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Functie: Voor de vacature als Ontwikkelaar Ms Dynamics 365 BC Roelofarendsveen MBO

Bekijk vacature »

Robot Programmeur

In het kort Drie redenen waarom deze vacature uniek is! Modern, innovatief en Informeel bedrijf waar veel mogelijk is Werken met diverse robot merken Meehelpen met inbedrijfstellingen bij de klant De organisatie Hier ga je aan de slag Dit groeiende bedrijf van totaaloplossingen in de automatisering van productieprocessen, is hoofdzakelijk actief in de Benelux. Vanuit het kantoor in regio Amersfoort worden veel oplossingen geboden in de vorm van robotica. Geen project is hetzelfde wat garant staat voor bijzonder veel afwisseling. De bedrijfsgrootte is ongeveer 80 man. Van gerobotiseerde machinebeladingen tot aan assemblage automatiseringen wordt vanuit krachtige engineering maatwerk equipment geleverd.

Bekijk vacature »

Full stack .NET developer Microsoft 365

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

Pagina: « vorige 1 2 3

Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/08/2013 09:51:14
Quote Anchor link
Beter laat dan nooit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
SELECT
    c.clubID,
    c.clubnaam,
    SUM(IF(c.clubID = u.thuisclubID,
            CASE
                WHEN u.thuisscore > u.uitscore THEN 3
                WHEN u.thuisscore = u.uitscore THEN 1
                ELSE 0 END
        , /* ELSE */
            CASE
                WHEN u.thuisscore < u.uitscore THEN 3
                WHEN u.thuisscore = u.uitscore THEN 1
                ELSE 0 END
        )) punt_totaal,
    COUNT(u.wedstrijdID) gespeeld,
    SUM(IF(c.clubID = u.thuisclubID,
            IF(u.thuisscore > u.uitscore, 1, 0),
            IF(u.thuisscore < u.uitscore, 1, 0)
        )) gewonnen,
    SUM(IF(c.clubID = u.thuisclubID,
            IF(u.thuisscore < u.uitscore, 1, 0),
            IF(u.thuisscore > u.uitscore, 1, 0)
        )) verloren,
    SUM(IF(u.thuisscore = u.uitscore, 1, 0)) gelijk,
    SUM(IF(c.clubID = u.thuisclubID, thuisscore, uitscore)) doelp_voor,
    SUM(IF(c.clubID = u.thuisclubID, uitscore, thuisscore)) doelp_tegen,
    SUM(IF(c.clubID = u.thuisclubID, thuisscore, uitscore)) -
        SUM(IF(c.clubID = u.thuisclubID, uitscore, thuisscore)) doelsaldo
FROM
    clubs c
LEFT JOIN
    (SELECT
        wedstrijdID,
        w.thuisclubID,
        w.uitclubID,
        COUNT(IF(d.thuisclub_uitclub = 'thuis', 1, NULL)) thuisscore,
        COUNT(IF(d.thuisclub_uitclub = 'uit', 1, NULL)) uitscore
    FROM
        tbl_wedstrijden w
    LEFT JOIN
        tbl_doelpunten d
        USING (wedstrijdID)
    WHERE w.datumwedstrijd BETWEEN '2012-08-09' AND '2012-08-12'
    GROUP BY wedstrijdID, w.thuisclubID, w.uitclubID
    ) u
    ON c.clubID = u.thuisclubID OR c.clubID = u.uitclubID
GROUP BY c.clubID, c.clubnaam
ORDER BY punt_totaal DESC, gespeeld, doelsaldo DESC, doelp_voor DESC
 
PHP hulp

PHP hulp

05/11/2024 22:22:37
 
Jo Immanuel

Jo Immanuel

10/08/2013 10:19:30
Quote Anchor link
Ongelooflijk bedankt Ger!

Hij doet het, en geeft alle informatie en is ook nog snel. Ik heb inmiddels de doelpunten voor 18 wedstrijden ingevoerd (57 doelpunten) en de query deed er slechts 0.0023 secondes over. Fantastisch.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 11:01:50
Quote Anchor link
Dat zegt nog niks, je hebt nog maar 6% van de wedstrijden ingevuld.
Door de subquery loopt die tijd 'exponentioneel' omhoog
Gewijzigd op 12/08/2013 11:51:29 door Ger van Steenderen
 
Jo Immanuel

Jo Immanuel

12/08/2013 12:41:59
Quote Anchor link
Ik heb zojuist alle doelpunten van de 34 speelrondes ingevoerd en de query duurt nu 0.1109 secondes.
Daar kan ik dus heel goed mee leven.

Wat ik inderdaad wel gemerkt heb is dat deze query exponentieel omhoog loopt in tijd. Is het daarom (vanwege die exponentiele stijging) niet toch een goed idee om meerdere tabellen te maken als ik straks ook andere competities invoer?

Dus als ik bijvoorbeeld de knvb-neker in wil voeren dat ik hiervoor een aparte wedstrijdentabel en doelpuntentabel maak? En bij het volgende seizoen van de eredivisie een nieuwe wedstrijden- en doelpuntentabel aan te maken? (En de naam van mijn huidige tabbellen te wijzigen van "tbl_wedstrijden" naar "tbl_wedstrijden_eredivisie_12/13" en "tbl_doelpunten" naar "tbl_doelpunten_eredivisie_12/13".?)

De tabel clubs (waarbij ik, net zoals bij de tabel spelers, niet van plan ben om meerdere tabellen te maken) wordt natuurlijk ook steeds groter en dat heeft dus waarschijnlijk ook negatieve gevolgen voor de tijd die nodig is om de stand van de competitie te berekenen.

Het is mij namelijk eerder aangeraden om dit allemaal in dezelfde tabellen te doen, maar ik zie niet zoveel bezwaren om daar nieuwe tabellen voor aan te maken.

Kun jij daar iets zinnigs over zeggen Ger?

PS: mag ik je nogmaals bedanken voor de fantastische query!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 13:29:11
Quote Anchor link
Zet eens EXPLAIN voor de query zoals je hem nu hebt, in het resultaat zie je dan bijvoorbeeld bij clubs(c) select type ALL (vanwege de left join) staan.
Dit kan je dan gewoon vervangen door een subquery die de clubs van het huidige seizoen eruit filtert, en dat zullen er dan altijd 18 blijven, en heeft dus geen nadelige gevolgen.

Dan voeg je voor de huidige competitie een aantal wedstrijden toe en kijk je of dat van invloed is op het resultaat van de EXPLAIN (hoogst waarschijnlijk niet).

PS.
Geen dank hoor, ik hem zelf ook gebruiken (zonder de subquery dan).
Gewijzigd op 12/08/2013 13:29:59 door Ger van Steenderen
 
Jo Immanuel

Jo Immanuel

12/08/2013 14:02:05
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     PRIMARY     tbl_clubs     ALL     NULL    NULL    NULL    NULL    18     Using temporary; Using filesort
1     PRIMARY     <derived2>     ALL     NULL    NULL    NULL    NULL    306     
2     DERIVED     w     ALL     NULL    NULL    NULL    NULL    301     Using where; Using temporary; Using filesort
2     DERIVED     d     ALL     NULL    NULL    NULL    NULL    944     


Dit krijg ik als resultaat als ik EXPLAIN ervoor zet.

Als ik je goed begrijp verwacht je dus dat extra wedstrijden en doelpunten (van andere competities/jaargangen) in de tabellen wedstrijden en doelpunten geen/nauwelijks invloed heeft op de snelheid van de query. En het dus het beste is om 1 wedstrijd- en 1 doelpuntentabel te hanteren voor alle wedstrijden en alle doelpunten uit elke competitie en elke jaargang?

Aan de andere kant: wat is nu eigenlijk het nadeel wanneer je voor elke competitie en jaargang aparte wedstrijd en doelpuntentabellen maakt? Ik zie ze niet. Eigenlijk zie ik alleen maar voordelen van verschillende tabellen:
1. Invoer is toch makkelijker en sneller.
2. Ik denk dat het ook positieve effecten (al is het misschien gering) heeft op de performance/snelheid.
3. Als een seizoen afgelopen is en de informatie staat erin, hoef je er ook niet meer aan te komen (niets meer in te voeren of aan te passen). Kun je er ook niet zo snel iets aan verkloten.

Of zie ik iets over het hoofd?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 15:13:17
Quote Anchor link
Ik ben bezig met een (desktop) applicatie, waarmee je verschillende competities kan genereren/beheren.
Die staan volledig los van elkaar, en dan heeft het geen enkel nut om al die data in één tabel te pompen.
Maar om per seizoen/jaargang een tabel te creëren heeft ook geen voordeel, en in mijn situatie zelfs een groot nadeel, want ik wil de mogelijkheid om statistische gegevens op te halen over alle afgelopen seizoenen.
 
Jo Immanuel

Jo Immanuel

12/08/2013 15:43:26
Quote Anchor link
Precies. Dus voor elke competitie een eigen tabel wedstrijden en doelpunten is helemaal geen verkeerd idee.

Wat ik alleen niet begrijp: hoezo kun je geen statistische gegevens gebruiken als je voor een competitie voor elke jaargang een aparte wedstrijden- en doelpuntentabel maakt? Je kunt de voorgaande jaren toch ook gewoon opvragen? Ik zie het grote nadeel daarvan niet zo goed.

En stel ik maak wel per competitie voor elke jaargang/seizoen een aparte doelpunten- en wedstrijdentabel. Krijg ik dan straks problemen als ik bijvoorbeeld bij spelers hun statistieken (gespeelde wedstrijden, doelpunten en assists) van voorgaande jaren wil laten zien? En wat voor problemen zijn dat dan?

Stel ik heb een speler en wil de volgende informatie laten zien:
Seizoen Competitie Gespeeld Doelpunten Assist
2013/14 x x x x
2012/13 x x x x
2011/12 x x x x
enz.

Krijg ik dan problemen als ik voor elk seizoen een aparte wedstrijden- en doelpuntentabel maak?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 15:54:09
Quote Anchor link
Dat heeft als gevolg dat je elk jaar je query moet gaan aanpassen, en dat kan niet de bedoeling zijn (in ieder geval niet de mijne)
 
Jeroen Jansen

Jeroen Jansen

12/08/2013 15:59:32
Quote Anchor link
Je krijgt dan misschien geen probleem, maar zult alle tabellen moeten joinen.
Ik denk dat je in dat geval minder flexibel bent dan alle doelpunten in één tabel met daaraan toegevoegd een foreign key per seizoen/competitie.
Als je de doelpunten van een speler voor seizoen 2012-2013 wilt laten zien die in de eredivisie en de Premier League heeft gespeeld heb je in jouw geval een join nodig om de gegevens bij elkaar te vinden, maar de sql zal niet hetzelfde zijn als die voor een speler die bijvoorbeeld in de Eredivisie en de Eerste divisie (andere tabelnaam) heeft gespeeld.
Wanneer je één tabel voor doelpunten hebt, kun je voor beide spelers wel dezelfde SQL blijven gebruiken.

Nu we hier toch met het voetbal bezig zijn. Ik ben voor mijn eigen site aan het kijken hoe ik zo efficient mogelijk een score-matrix kan maken. Zoiets als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
          Aja Fey PSV Vit
Ajax      xxx 2-1
Feyenoord     xxx
PSV               xxx 2-0
Vitesse               xxx


Hoe zouden jullie dat aanpakken. Eventueel niet gespeelde wedstrijden, zou ik dan graag voorzien van een datum waarop ze staan gepland.
Gewijzigd op 12/08/2013 16:07:04 door Jeroen Jansen
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 16:41:42
Quote Anchor link
Jeroen Jansen op 12/08/2013 15:59:32:
Je krijgt dan misschien geen probleem, maar zult alle tabellen moeten joinen.
Ik denk dat je in dat geval minder flexibel bent dan alle doelpunten in één tabel met daaraan toegevoegd een foreign key per seizoen/competitie.

Ger van Steenderen op 12/08/2013 15:54:09:
Dat heeft als gevolg dat je elk jaar je query moet gaan aanpassen, en dat kan niet de bedoeling zijn (in ieder geval niet de mijne)

Je kan die data wel bij elkaar krijgen, dat is het probleem niet.

Dat onderscheid tussen seizoen/competitie moet je in de wedstrijden tabel aanbrengen anders geeft de query voor de uitslagen een onjuist resultaat.

Jeroen Jansen op 12/08/2013 15:59:32:
Hoe zouden jullie dat aanpakken. Eventueel niet gespeelde wedstrijden, zou ik dan graag voorzien van een datum waarop ze staan gepland.

Als de volgorde van de clubs zoals je ze toont dezelfde is als waarop ze zijn ingevoerd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
    c.clubID,
    c.clubnaam,
    w.uitID,
    IF(u.thuisscore IS NULL, DATE_FORMAT('%d-%m-%y', w.datum),
        CONCAT_WS('-', thuisscore, uitscore)) uitslag_cq_datum
FROM
    clubs c
JOIN
    wedstrijden w ON c.clubID = w.thuisID
LEFT JOIN
    uitslagen u USING (wedtrsijdID)
ORDER BY
    c.clubID, w.uitID

Met deze info moet je in PHP die matrix kunnen samenstellen
 
Jo Immanuel

Jo Immanuel

12/08/2013 17:37:56
Quote Anchor link
Een foreign key per seizoen/competitie in tabel doelpunten zou in principe toch weer dubbele informatie zijn? Aangezien die informatie (seizoen/competitie) al zit in tabel wedstrijden en wedstrijdID als foreign key in de tabel doelpunten zit.

Maar je reactie, Jeroen, heeft me wel weer aan het denken gezet. Als een speler een transfer heeft gemaakt naar of van een andere competitie dan krijg ik (query)problemen bij het weergeven van de statistieken van die speler.

Wat is wijsheid?

Ik heb 4 verschillende opties:
A: Alle competities en alle jaargangen in 1 tabel wedstrijden en doelpunten.
B: Voor elke competitie een aparte tabel wedstrijden en doelpunten.
C: Voor elke jaargang een aparte tabel wedstrijden en doelpunten.
D: Voor elke competitie en elke jaargang een aparte tabel wedstrijden en doelpunten.

Bij A ben ik toch wel een beetje bang voor performance. Ik merkte namelijk al bij de tabel spelers (waar aardig wat informatie in zit) dat de laadtijd voor ik een nieuwe speler kon invoeren al snel stukken groter werd naarmate er meer spelers in de tabel kwamen. Wat nu straks als ik vijf competities doe en er al vijf jaar om zijn. Dan krijg je enorme grote tabellen niet?

Of is dit gewoon een irreele angst wat in mn hoofdje zit geprent?

En stel ik kies niet voor A, dan maakt dat voor de weergave van de stand niet veel uit (ja, ik moet eens per jaar de tabelnamen van de "stand"-query aanpassen), maar wordt het wat lastiger wat betreft de (historische) statistieken van een speler. Die gaan namelijk over meerdere seizoen en meerdere competities (dus meerdere tabellen).

Poehee. Kan iemand daar iets zinnigs over zeggen?


Toevoeging op 12/08/2013 17:46:36:

PS: @Ger

Dus stel ik maak onderscheid in tabellen voor wat betreft competitie en seizoen, dan moet het onderscheid tussen competitie en seizoen komen uit tabel wedstrijden (en dus niet uit tabel doelpunten).

Maar waar geef ik dat onderscheid dat in de "stand"-query aan?

Door na
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE w.datumwedstrijd BETWEEN '2012-08-09' AND '2012-08-20'

en voor GROUP BY het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
AND w.competitie = 'Eredivisie' AND w.seizoen = '2012/2013'


?
Gewijzigd op 12/08/2013 17:50:08 door Jo Immanuel
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 19:45:15
Quote Anchor link
Dit is nu het ultieme voorbeeld van dubbele data, je krijgt in de wedstrijden tabel maximaal 1 kolom extra, en dat is het competitie id.

En reken zelf eens uit hoeveel records je in de doelpuntentabel krijgt bij 5 competities en 5 seizoenen.
Gebaseerd op 18 teams per competitie en gemiddeld 3 doelpunten per wedstrijd kom ik op ca 23000 records, dat stelt geen ene moer voor.
Je moet gewoon ervoor zorgen dat je de juiste indexen hebt, en als je twijfels hebt gewoon uitproberen via EXPLAIN
Gewijzigd op 12/08/2013 19:59:11 door Ger van Steenderen
 
Jo Immanuel

Jo Immanuel

12/08/2013 20:09:29
Quote Anchor link
OK. Dus eigenlijk adviseer jij me om alle competities en alle seizoenen op te nemen in 1 wedstrijden en 1 doelpunten tabel omdat de hoeveelheid records in die tabellen peanuts is.

En verder moet ik dus alleen competitie (bijv. eredivisie) meenemen in de wedstrijden tabel. En niet seizoen (bijv. 2012/2013) aangezien je deze eigenlijk al meegeeft met (/af kunt leiden uit) de datum van de wedstrijd.

De stand berekenen ik dan volgens de door jou gegeven "stand"-query waarbij ik na
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE w.datumwedstrijd BETWEEN '2012-08-09' AND '2012-08-20'

en voor GROUP BY de volgende toevoeging doe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
AND w.competitie = 'Eredivisie'


?

PS: Hoe weet ik als ik EXPLAIN gebruik voor de query of de query slechter wordt qua performance? Moet ik dan naar de rijen kijken (nu 18, 306, 301, 944) en controleren of wanneer ik extra competities en/of extra jaargangen toevoeg, (en natuurlijk op de juiste manier de subqueries heb gezet in de "stand"-query) deze niet meer worden?
En als deze rijen niet meer worden, dan blijft de performance (nagenoeg) hetzelfde ondanks het grotere aantal records in tabel wedstrijden en doelpunten?
Gewijzigd op 12/08/2013 20:22:29 door Jo Immanuel
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

12/08/2013 20:51:13
Quote Anchor link
Wat ik je adviseer is om NOOIT (var)chars te gebruiken. Je moet namelijk die een index op die kolom hebben en een index op een getal is sneller.
Maar wat ik doe is alleen maar inschattingen maken op jouw sitatie, wil het zeker weten is het een kwestie van dat invoeren en dan door de query planner (EXPLAIN) heen te gooien, of echt benchmarks uit te voeren.
Gewijzigd op 12/08/2013 20:55:58 door Ger van Steenderen
 
Jo Immanuel

Jo Immanuel

12/08/2013 22:35:48
Quote Anchor link
Nog een aantal vragen Ger:

1. Bedoel je hiermee dat je adviseert in een tabel helemaal geen (var)chars te gebruiken, maar beter INT? Of geldt dit alleen/voornamelijk voor de PK's, FK's en de zaken waarop gezocht/geselecteerd moet worden?

2. Competitie in de tabel wedstrijden heb ik nu als (var)char. Die kan ik dus (gezien performance) beter als fk (in integer-vorm) binnen halen in tabel wedstrijden?

3. Verder heb ik zojuist een beetje lopen zoeken over indexering, maar nu lijkt het erop dat de tabellen van mij niet helemaal optimaal ingesteld zijn qua indexing volgens mij.

EXPLAIN:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra
1     PRIMARY     tbl_clubs     ALL     NULL    NULL    NULL    NULL    18     Using temporary; Using filesort
1     PRIMARY     <derived2>     ALL     NULL    NULL    NULL    NULL    306    
2     DERIVED     w     ALL     NULL    NULL    NULL    NULL    301     Using where; Using temporary; Using filesort
2     DERIVED     d     ALL     NULL    NULL    NULL    NULL    944      


Daar vallen twee dingen op:
a. Er staat bij kolom 'Extra' de waarde "Using temporary". Dit kost (extra) intern geheugen van de server. Maar daar ontkom ik volgens mij bij de "stand"-query niet aan, omdat er tijdelijke tabellen worden gebruikt in de query om de doelpunten en punten te berekenen.
b. Bij de kolommen 'possible keys', 'keys' (, 'key len' en 'ref') staat "Null". Als er een goede indexing zou zijn dan zouden die toch gevuld moeten zijn?
Gewijzigd op 12/08/2013 22:42:07 door Jo Immanuel
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/08/2013 13:34:06
Quote Anchor link
1. Voor een PK kan je het beste een integer gebruiken, dat kost ten eerste minder bytes, en ten tweede kan een naam eventueel nog veranderen, en ten derde is het sneller te indexeren dan een varchar. Omdat een FK altijd het zelfde datatype MOET hebben als de referentiekolom geldt hetzelfde daarvoor.

2. Ja :-) en dan dus 1 FK voor competitie/jaargang

3a. Using temporary is het gevolg van een subquery en/of group by, dus daar ontkom je inderdaad niet aan

3b. Een derived table (een subquery) heeft geen indexen, dus NULL possible keys. Bij de rest zou daar altijd iets ingevuld moeten zijn, en ik kan even niet zo snel ontdekken waarom dat bij de clubs tabel niet zo is.
Je moet in ieder geval een index zetten op de datum in de wedstrijd tabel.
Of een key wel of niet gebruikt wordt is afhankelijk van de query, je selecteert bv alle clubs dus hoeft er geen key gebruikt te worden.
 

Pagina: « vorige 1 2 3



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.