stand competitie uitrekenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full stack developer Node.js, React Remote

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Zoek jij een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf? Wij zijn voor deze functie op zoek naar een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! Verder ga jij je bezighouden met: Het verbeteren van functionaliteiten binnen het dataplatform; Meedenken in oplossingsrichtingen; Werken aan de architectuur; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je werken? De organisatie waar je voor gaat werken heeft een onafhankelijk

Bekijk vacature »

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Senior Front-end developer Consultancy

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

Randstad B.V.- Freelance Senior Fullstack Develope

Startdatum: 01.05.2023 Richttarief: € 75,00 - €85,00 Duur van de opdracht: 1 jaar Uren per week: 40 Werkmodel: Hybride, dinsdag en donderdag aanwezig op kantoor in Diemen en meer wanneer dit nodig is. Functieomschrijving: De ideale kandidaat gaat onderdeel uitmaken van een junior team binnen het foundation domein. Vanuit het foundation domein werkt dit team samen met andere foundation teams en teams uit het online domein (professionals B2B en B2C) voor het bouwen en integreren van HRM functionaliteiten (verlof en benefits) in de persoonlijke portal van Interim Professionals. Er is meer backend werk dan frontend, maar kandidaat moet beiden leuk

Bekijk vacature »

Mendix Ontwikkelaar - Vernieuwen van het applicati

Bedrijfsomschrijving De ontwikkelingen in de transportsector gaan razendsnel. Bij ons kun je een belangrijke rol spelen in deze sector. We streven ernaar om onze klanten te ontzorgen op het gebied van continuïteit en veiligheid met innovatieve producten en diensten. We willen dat onze klanten de veiligste vervoerders van Europa worden. Ons team werkt hard om deze ambitieuze doelstellingen te bereiken en we bieden een motiverende werkomgeving aan. We zijn op zoek naar zelfstarters met een focus op resultaat en beslissingsbevoegdheid. Functieomschrijving Als Mendix ontwikkelaar bij deze organisatie heb je een gevarieerde baan. Het applicatielandschap wordt vernieuwd en de “schade en

Bekijk vacature »

Senior Front-End Developer

As a Senior Front-end Developer you maintain the balance between creativity and functionality for our webshop, and you coach your fellow developers. How do I become a Senior Front-End Developer at Coolblue? As a Front-end Developer you work on the user-friendliness of our webshop for millions of customers. You enjoy working with the UX Designer to pick up stories. You get energy from coming up with creative solutions and are happy to present this within the team. You are also proud of your work and welcome all feedback. Would you also like to become a Senior Front-End Developer at Coolblue?

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 »

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Functioneel Applicatiebeheerder voor het financiele domein op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op

Bekijk vacature »

Medior/senior Fullstack developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »

Teamlead PHP Developer

Functieomschrijving Voor een gewaardeerde werkgever in de buurt van Middelburg zijn wij op zoek naar een gemotiveerde teamlead PHP developer met affiniteit met Symfony/Laravel. Een enthousiast persoon die het ontwikkelteam komt versterken met het aanpakken van uitdagende projecten. Ben jij op zoek naar een uitdaging waar je de tijd en ruimte krijgt jezelf te ontwikkelen en je eigen IT-team aan te sturen? Lees dan snel verder! Die ga je doen: Bijdragen aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de PHP based applicaties; Ontwikkeling en beheer van de serviceportal in Symfony en de webshops in de tweede versie van

Bekijk vacature »

Software Developer

Dit ga je doen Ontwerpen, ontwikkelen en onderhouden van (mobiele) internettoepassingen; Ontwikkelen en onderhouden van Microservices; Ontwerpen en optimaliseren van databases; Identificeren van nieuwe trends/ontwikkelingen binnen de branche. Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt zich op het leveren van kwalitatief hoogwaardige producten aan alle hun klanten. De organisatie telt circa 4.000 medewerkers in meer dan 10 verschillende landen. Momenteel is de organisatie op zoek naar een Software Developer wilt meewerken aan het

Bekijk vacature »

IoT Software Developer PHP

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een IoT software developer met kennis van PHP. In deze rol wordt je verantwoordelijk voor het vernieuwen van het multimedia platform van een super tof bedrijf in Breda. Je gebruikt PHP als programmeerlaag, en bent in staat om de helicopterview te pakken / projectmatig te werken. Jouw werkzaamheden zien er als volgt uit: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "intern" ontwikkelde multimedia platform. Je neemt de lead in het moderniseren van het platform door het deels opnieuw op te zetten of

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Voor een opdrachtgever, met een prachtig kantoor in omgeving Wateringen zijn wij op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind jij het leuk om in een Agile/Scrum omgeving te werken? Wil jij

Bekijk vacature »

Belastingdienst - Freelance Senior Cobol Applicati

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 7 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: In de applicatie ETM zijn nu de inningsvoorzieningen voor ongeveer 25 aangifte- en aanslagmiddelen opgenomen. ETM is een extern aangeschafte service en het huidige contract met leverancier Oracle loopt af op 31-12-2022. Het programma uitfaseren ETM heeft als doel om vervanging te realiseren waarmee alle nu in gebruik zijnde ETM ondersteuning wordt overgenomen in nieuwe Inningsvoorzieningen om de continuïteit van de inningsprocessen te waarborgen. Eén van de inningsvoorzieningen die voor het einde van 31-12-2022

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

21/11/2024 15:16:35
 
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.