stand competitie uitrekenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back End Developer .NET

Dit ga je doen Ontwikkelen in C# .NET en werken aan nieuwbouw, uitbouw en onderhoud van de software (die communiceren met 68.000 sensoren, waardoor er meerdere miljoenen berichten per uur verwerkt worden); Samenwerken in Scrum Teams; Meewerken aan verschillende, uitdagende projecten; Werken met nieuwe technologieën en vrijheid krijgen om jezelf te ontwikkelen en door te groeien. Hier ga je werken Je komt als Developer te werken bij een organisatie die gespecialiseerd is in software die real-time wordt gebruikt. De software constateert waar werk moet worden uitgevoerd en de chauffeurs worden met een andere applicatie hierop geattendeerd. Ook wordt er direct

Bekijk vacature »

Ervaren PHP ontwikkelaar

Functie Jij als PHP ontwikkelaar komt te werken in een team van 4 andere PHP ontwikkelaars. Je zult je voornamelijk bezig houden met: – Het ontwikkelen van nieuwe features – Doorontwikkelen van de API – Nadenken over de technische infrastructuur – Datakwaliteit Samen met het team ben jij verantwoordelijk voor de verdere ontwikkeling van de software en om de positie als marktleider in Europa te behouden. Ze werken volgens SCRUM in 2 wekelijkse sprints, werken met Jira voor alle tickets en communiceren veel via Slack. Eisen • Minimaal 3 jaar ervaring als back end developer • Je hebt affiniteit met

Bekijk vacature »

.Net ontwikkelaars voor de zorgsector

Bedrijfsomschrijving Voor onze klant in de omgeving van Zwolle zijn wij op zoek naar een ervaren .Net ontwikkelaar, bij voorkeur met ervaring binnen de belangrijkste sector van Nederland, namelijk: de zorgsector. Deze internationale organisatie ontwikkelt software voor de zorgsector. Er werken zo'n 25 medewerkers hard aan een oplossing die gebruikt wordt door heel Nederland. Er heerst een informele sfeer waarbij er altijd ruimte is voor een grapje. Je collega's zijn stuk voor stuk sterke ontwikkelaars vanuit verschillende achtergronden en met verschillende leeftijden. Je komt hier terecht in een organisatie die zich hard inzet om de zorgsector te verbeteren. De mogelijkheden

Bekijk vacature »

C# .NET Developer

Functie omschrijving Wij zijn op zoek naar een C# .NET Developer voor een bedrijf in de omgeving van Utrecht! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans! Je kunt een uitdagende rol gaan vervullen als C#.NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving van Utrecht. Je zult gaan samenwerken met collega's die over de hele wereld verspreid zitten. Dit bedrijf is zeer vooruitstrevend en werkt met de nieuwste technieken. Als C#.NET Developer ga jij je bezig houden met het volgende: Je blijft op de hoogte van

Bekijk vacature »

Front end developer

Functie Binnen de functie van Front-end developer werk je mee aan uitdagende klantprojecten. In teamverband werk je aan de voorkant van onze state-of-the-art portaal oplossingen en apps. Dit alles gebeurt in een multidisciplinaire omgeving waarbij je de ruimte hebt om te sparren, je ideeën scherp te stellen, en waar je met de benodigde kennis en ervaring om je heen altijd terecht kunt bij je collega’s voor vragen en ondersteuning. Meestal werk je vanuit ons kantoor maar we bieden ook alle faciliteiten om thuis te kunnen werken. Voor sommige projecten ga je mee naar de klant, wellicht zelfs in het buitenland!

Bekijk vacature »

Senior PHP Developer

As a Senior PHP Developer at Coolblue, you ensure that our webshops work as optimal as possible and you choach other colleagues on the hard and soft skills. How do I become a Senior PHP Developer at Coolblue? As a PHP Developer you work together with other development teams to make our webshop work as optimal as possible and to make our customers happy. Although you are a PHP Developer, you are not averse to a little TypeScript or other technologies that might be used. Would you also like to become a PHP Developer at Coolblue? Read below if the

Bekijk vacature »

PHP Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij op zoek naar een nieuwe uitdaging? Lees dan snel verder! Voor een organisatie in de regio Utrecht die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in

Bekijk vacature »

.NET developer

Functie As a .NET developer you start in a driven and diverse development team. Your team consists of 16 IT professionals, including 7 software engineers. Because your new employer is internationally active, there are also international IT professionals working in the IT department. As a result, the official language is English. As a team you are responsible for a new Cloud Native product. This product runs entirely in Azure with a Progress Database and various Azure Functions. In addition, this product has a JS front-end, a REST API system and a layer in C # .NET. The idea is therefore

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Capelle ad Ijssel Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Een deel van jouw werkzaamheden: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps en Power BI.

Bekijk vacature »

Mendix Developer

For our client in Amsterdam, we are looking for a Senior Mendix Developer. Company description Our client is an IT Consultancy company who’s been active for 10 years now. With their ambitious team, they are working with different clients in order to help them with analyzing their data and giving advice to them, regarding how they can use their data in the smartest ways, or to make sure that their mobile or web applications are working efficiently. As you get a glimpse of various industries, it is guaranteed that no day will be the same. Job description As a Mendix

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET developer begint jouw dag na een bak koffie met een stand up. De vorderingen worden tijdens de stand up besproken en de doelen worden opgesteld waar jullie als team in de volgende sprint naartoe gaan werken. Onze backend is geschreven in .NET Core en onze Front-end in Angular. Bij ons ga jij dan ook Fullstack aan de slag. Jij wordt hier opgeleid om zelfstandig te kunnen programmeren en applicaties te kunnen implementeren. Er wordt op projectbasis gewerkt, dit bied leuke uitdagingen omdat elke klant een andere visie heeft over de applicatie die wij maken. Je gaat

Bekijk vacature »

Senior Front-end Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Senior Front-end Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

Bekijk vacature »

Back-end PHP Developer

Dit ga je doen Her- en uitbouwen van het inhouse softwareplatform dmv PHP; Onderhouden van bovengenoemd platform in PHP; Sparren met het team; Meedenken over nieuwe functionaliteiten, security etc; Jouw input leveren aan het proces door op de hoogte te blijven van nieuwe ontwikkelingen etc. Hier ga je werken Onze klant, gevestigd in de omgeving van Alkmaar, levert wereldwijd oplossingen op het gebied van IT. Dag in dag uit werken zij met veel passie aan hun product waarmee ze streven naar verbeteringen binnen zorg. Voor onze klant zijn we op zoek naar een medior PHP Developer. Je komt te werken

Bekijk vacature »

Oracle Apex developer

Bedrijfsomschrijving My client is a technology company based in Den Bosch, the Netherlands. They specialize in providing innovative software solutions to clients, and they are currently looking for an experienced Oracle Apex developer to join the IT team. Functieomschrijving As an Oracle Apex developer, you will be responsible for designing, developing, and maintaining web-based applications using Oracle Apex. You will work closely with project managers, business analysts, and other developers to ensure that clients' needs are met and that the software solutions are of the highest quality. Responsibilities: Design, develop, and maintain Oracle Apex applications. Work with project managers and

Bekijk vacature »

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 »

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

22/12/2024 23:14:14
 
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.