Zware querys verbeteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Ontwikkelaar die ICT structuren perfect laat

Vacature Omschrijving Een goede ICT structuur is wat een organisatie bij elkaar houdt. Dat is precies wat deze organisatie doet door de ICT-structuren te ontwerpen, implementeren en beheren. Belangrijk hierbij zijn de zes zakelijke behoeften waarin zij de klanten voorzien. Deze zijn: Consultancy, Communicatie, Cloud, Service, Beheer en Security. Zodra deze zes elementen tot in perfectie functioneren heeft de klant alle tools, energie en inspiratie om het meeste uit de business te halen. Klanten van deze organisatie willen de ICT tot in perfectie laten functioneren. Hiervoor is er dus veel aandacht, maatwerk, advies en optimalisatie nodig. Daar ga jij als

Bekijk vacature »

PHP Developer op de groei BDD Zorg

Functieomschrijving Ben jij een PHP Developer die zich nog wilt ontwikkelen? Ben jij innovatief, leergierig en wilt graag groeien? Werk jij graag met kritische vraagstukken dat een mensenleven kan redden of kosten? Reageer nu en kom alles te weten! Ben jij iemand die energie krijgt van het ontwikkelen van een complexe PHP objectgeoriënteerde platform; Denken jij graag mee over de architectuur; Geeft een mooie schone code jou energie en doe jij er alles aan dat dit zo blijft; Vind jij het net zo belangrijk dat de huidige software goed onderhouden wordt; Denk jij graag out of the box; Lees dan

Bekijk vacature »

Programmeur .NET Medior

De organisatie ‘Wij willen graag gezien worden als een echt familiebedrijf, maar wel een familie met ambitie en passie voor het werk’. Je bent hier geen nummer, maar echt onderdeel van het team. Je gaat werken met de nieuwste software binnen de zorgsector, waarbij jij op een maatschappelijk duurzame manier de kwaliteit van leven van patiënten verbetert! Deze organisatie is marktleider in dit segment en biedt haar klanten de mogelijkheid tot een uitgebreid, organisatie-breed softwarepakket dat wordt gebruikt door academische ziekenhuizen door heel Nederland. Het is een technisch hoogstaand product, waar jij gaat werken binnen Angular7.0 & .NETCore! De nadruk

Bekijk vacature »

PHP Developer / High Traffic

Organisatie Deze organisatie met ruim 50 man groot zit gevestigd in het centrum van Haarlem. Vanuit hier zijn de marktleider in de Benelux op het gebied van online dating waarvoor ze meerdere websites en platformen ontwikkelen en beheren. Op kantoor bieden zij onderdak aan de meest talentvolle en succesvolle PHP developers in regio Amsterdam. Naast het ontwikkelen van websites en systemen richt deze organisatie zich ook sterk op de ontwikkeling van hun medewerkers. Deze organisatie is gevestigd in een gaaf pand en biedt een enorm moderne werkomgeving, kort samengevat: er heerst hier een echte Silicon Valley mentaliteit. Je komt terecht

Bekijk vacature »

Als C# .NET ontwikkelaar bouwen aan cloud oplossin

Vacature Omschrijving Voor een toonaangevende partij in Hoofddorp kun jij aan de slag als C# .NET ontwikkelaar. De ICT kennis bij dit bedrijf is uiterst divers. Zij richten zich vooral op bedrijven met meer dan 50 werkplekken voor wie de continuïteit van business van groot belang is. De cloud oplossingen en softwareapplicaties van enterprisekwaliteit maken zij toegankelijk voor middelgrote bedrijven. Voor relaties die nog niet aan een cloud oplossing toe zijn, verzorgen zij het ICT-beheer door middel van managed services en bieden zij ondersteuning bij ICT-gerelateerde vraagstukken. Indien gewenst voeren zij voor hen op enig moment een cloud migratie uit.

Bekijk vacature »

Software Developer

This position is only for candidates who live and are allowed to work in the Netherlands. Visa unfortunately cannot be supported. KerridgeCommercial Systems zoekt meerdere: Software Developers (32- 40 uur) Over ons: Kerridge Commercial Systems (KCS) biedt geavanceerde, volledig geïntegreerde bedrijfsoplossingen aan groothandels, distributeurs, verhuurbedrijven, projectgestuurde bedrijven en installateurs. Met meer dan 40 jaar ervaring heeft Kerridge Commercial Systems een toonaangevende branchekennis en expertise van bedrijfsprocessen opgebouwd. Wij bieden met onze ERP-software moderne en flexibele oplossingen die inspelen op de behoeften van handel, distributie, verhuur en installatie. Onze oplossingen zijn schaalbaar en geschikt voor kleine organisaties tot internationale bedrijven met

Bekijk vacature »

Medior Full-stack .NET Developer

Eén van onze partners in de regio Weert is opzoek naar een full stack developer om hun team te versterken. Hebben robots altijd jouw interesse gehad? Dan is dit de vacature voor jou! Organisatie Wat ooit opgezet is als een eenmanszaak vanuit een idee van de eigenaar, is inmiddels uitgegroeid tot één van de technische wereldleiders op het gebied van automatiseringsoplossingen. Tijdens zijn studententijd is de eigenaar bezig geweest met het bouwen van zijn eigen robotica. Dit idee besloot hij op de markt te gaan zetten en zo heeft hij in 2008 bedacht. Waar voor velen de recessie in 2009

Bekijk vacature »

.NET/ C# SharePoint ontwikkelaar gezocht in omgevi

Vacature Omschrijving Voor een klant zijn wij op zoek naar een .NET/ C# ontwikkelaar die graag met SharePoint wilt werken. Het bedrijf bestaat uit 25 werknemers waarvan 4 ontwikkelaars, met een specialisatie in het digitaliseren van bedrijfsprocessen. Hierbij moet je vooral denken aan document management dat ervoor zorgt dat post geregistreerd wordt, het onderhouden van kwaliteitssystemen en handboeken die gestructureerd worden. De softwarepakketten die het bedrijf aan haar klanten levert zijn Cloud-based en gericht op SharePoint. De eindgebruiker staat hierbij altijd centraal, waardoor jij ervoor moet zorgen dat de focus ligt op de mensen die gebruik gaan maken van de

Bekijk vacature »

C++ Developer

Are you fluent in C++? Do you have an interest in elegant algorithms and solving a wide array of extremely challenging C++ development tasks? If so, then we would like to meet you. Your responsibilities will include but not restricted to: Design, build and maintain efficient, reusable, and reliable C++ code Working autonomously is essential. As a developer you are expected to do architecture, design, implementation, customer feedback and bug fixing (rather than splitting these activities between several developers) Building cross-platform applications Implementing reverse/back-engineering development using IDA from Hex-Rays Requirements: Strong proficiency in C++14, with a fair knowledge of the

Bekijk vacature »

Als PHP developer knallen in een nieuw team bij ee

Vacature Omschrijving Voor een toonaangevende naam in de assurantiemarkt zijn wij hard op zoek naar medior en senior PHP developers. Wij horen je denken: is deze sector wel dynamisch genoeg voor mij? Dynamisch en uitdagend is het absoluut! Als een van de weinige partijen in de assurantiemarkt bedienen zij het hele palet aan risico-inventarisatie, verzekeringen en financiële dienstverleners voor hun klanten. Momenteel hebben ze één development team, maar ze willen dolgraag uitbreiden en uiteindelijk een tweede team opzetten. Momenteel bestaan zij zo’n 35 jaar. Zij zijn een van de weinige assurantie-ondernemingen in Nederland die daadwerkelijk onafhankelijk zijn. Dat wil zeggen:

Bekijk vacature »

Full-stack .NET Developer

Organisatie Deze organisatie is al 25 jaar actief in de zorgsector en is marktleider binnen haar branche. De software die ze leveren is complex en zeer technisch, wat het altijd uitdagend maakt. De software wordt gebruikt door professionals binnen de medische branche, die door deze software beter en efficiënter patiënten kunnen behandelen. Dit betekent dat jij bijdraagt aan software met maatschappelijke impact! Voor de werknemers binnen deze organisatie geldt dit als intrinsieke motivatie. Je komt dus in een team terecht waarbinnen de neuzen dezelfde kant op staan en waarvoor het maatschappelijk belang van de software de drijfveer is. Dit alles

Bekijk vacature »

PHP Developer

Organisatie Vanaf de buitenkant is het lastig te zien maar in een kantoor in het centrum van Eindhoven gaat een heuse PHP paradijs schuil, aan de `hemelpoort` beneden bij de receptie zit een lieve dame die jou als een Petrus feilloos weet te vertellen welke kant je op moet om het heilige grond te betreden. Eenmaal boven wacht daar een hemelse bak koffie of thee en verwelkom jij je andere 20 teamleden met een goede (vrijdag)morgen. Vandaag is de dag dat jij je bezig gaat houden met 2 verschillende projecten, een hiervan staat in de ochtend centraal en de andere

Bekijk vacature »

Medior C# developer / Consultancy /

Ken je dat gevoel dat je stagneert in je werkzaamheden en dat je geen ruimte hebt om jezelf te kunnen blijven ontwikkelen? Dat je voor de zoveelste keer aan een project wordt toegewezen die niet geheel bij jouw interesses past? Dat er direct van je wordt verwacht om de rol als architect te vervullen, terwijl je als senior het liefst zelf aan de knoppen draait? En wil jij graag het beste jongetje zijn van de klas? Dan heb ik de buitenkans waar jij op hebt gewacht! Organisatie Voor een van mijn opdrachtgevers ben ik op zoek naar een echte Champions

Bekijk vacature »

Ontwikkel je in een snelgroeiende organisatie als

Vacature Omschrijving Deze organisatie is gericht op de bedrijfsgezondheid, snelgroeiend en hard op zoek naar een full stack developer. In 2003 is de organisatie opgericht en vijf jaar geleden zijn zij gereorganiseerd. Zij werken met passie aan het ontwikkelen van softwareoplossingen waarmee de kosten van verzuim beheersbaar worden. De organisatie is een leverancier via de Cloud SaaS-diensten aan bedrijven die gericht zijn op het ondersteunen van de samenwerking tussen professionals in die bedrijven. Zij hebben een stevige marktpositie als leverancier van verzuimsoftware en breidt uit naar een totaaloplossing voor bedrijfsgezondheidssoftware. Als voorloper op het gebied van security in SaaS producten

Bekijk vacature »

Xamarin Developer

Functieomschrijving Ben jij de Xamarin expert die de volgende stap in zijn carrière wil zetten? Houd jij er van om veelgebruikte apps verder uit te bouwen terwijl je de kwaliteit blijft waarborgen en heb je daarnaast zelf innovatieve ideeën ? Lees dan snel verder! Samen met het gehele mobile app team ben jij verantwoordelijk voor: de (door)ontwikkeling van Native applicaties voor Android en iOS; het verder samenbrengen van de applicatie en de web omgeving; de innovatie van de applicatie, het is belangrijk dat jij zelf meedenkt en jouw ideeën voorlegt binnen het team; feedback vanuit de gebruikers te behandelen en

Bekijk vacature »
Joni Fleischer
Moderator

Joni Fleischer

22/02/2015 11:50:43
Quote Anchor link
Hallo allemaal,

Ik heb een uren registratie programma geschreven. Nu werkte het allemaal zeer goed, tot er 2 jaar aan uren in verwerkt zijn. Nu als je als ADMIN de uren wilt beheren, dan is de laadtijd aanzienlijk zeg maar.

Ik denk dat het komt door het volgende:

- Ten eerste worden ALLE uren geladen in 1 keer. (3743 stuks)
- Daarna wordt er per record gekeken of ze gegroepeerd kunnen worden
- daarna wordt van elke record gekeken hoeveel uur ze hebben gemaakt totaal in een week
-- Deze worden opgeteld en gegroepeerd.

Dat is deze code:

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
<?php
$duedt
        = explode("-",$row['date_hours']);
$date         = mktime(0, 0, 0, $duedt[1], $duedt[2],$duedt[0]);

$sql = "
SELECT
    hours
FROM
    hours
WHERE
    user_id = '"
.$row['user_id']."'
AND
    status = 'accept'
AND
    week_nr = '"
.$row['week_nr']."'
AND
    YEAR(date_hours) = '"
.$duedt[0]."'
AND
    archive = 'no'
"
;
if($res2 = mysqli_query($mysqli, $sql))
{

     $aantal_uur = array();
     while($hours = mysqli_fetch_assoc($res2)):
          $aantal_uur[] = ($hours['hours'] >= 0) ? $hours['hours'] : $hours['hours'] + 24;
     endwhile;                                                                                                      
}

?>


Heeft iemand een betere en snellere query voor mij?
Gewijzigd op 22/02/2015 11:54:36 door Joni Fleischer
 
PHP hulp

PHP hulp

19/09/2019 09:44:06
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/02/2015 12:40:24
Quote Anchor link
Ik zou iig zeggen om user_id, week_nr en YEAR buiten qoutes te laten aangezien dit numerieke waarden zijn.
Daarnaast zou je de kolommen kunnen indexeren die in je WHERE gedeelte staan.
Ik ben tevens benieuwd welke typen de kolommen uit de hours tabel hebben. (bijv. integer, varchar etc)
Daarnaast: voor de kolom 'status': Hoeveel verschillende waardes kent deze kolom?
 
Joni Fleischer
Moderator

Joni Fleischer

22/02/2015 12:44:10
Quote Anchor link
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
<?php
$duedt
         = explode("-",$row['date_hours']);
$date         = mktime(0, 0, 0, $duedt[1], $duedt[2],$duedt[0]);

$sql = "
SELECT
    hours
FROM
    hours
WHERE
    user_id = $row['user_id']
AND
    status = 'accept'
AND
    week_nr = $row['week_nr']
AND
    YEAR(date_hours) = $duedt[0]
AND
    archive = 'no'
"
;
if($res2 = mysqli_query($mysqli, $sql))
{

     $aantal_uur = array();
     while($hours = mysqli_fetch_assoc($res2)):
          $aantal_uur[] = ($hours['hours'] >= 0) ? $hours['hours'] : $hours['hours'] + 24;
     endwhile;                                                                                                      
}

?>


De kolommen:
date_hours = date
week_nr = int
Status = enum('temp', 'send', 'accept', 'denied')
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/02/2015 12:45:51
Quote Anchor link
Een index op user_id, week_nr.
Een index op date_hours.

Dan met GROUP BY van alle gebruikers per week de uren verzamelen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
    user_id,
    week_nr,
    SUM(hours) total_hours
FROM
    hours
WHERE
    status = 'accept'
    AND
    archive = 'no'
    AND
    date_hours BETWEEN STR_TO_DATE(CONCAT YEAR(CURRENT_DATE), '-01-01'), '%Y-%m-%d') AND CURRENT_DATE
GROUP_BY user_id, week_nr

Je moet altijd proberen te vermijden te filteren op functies met kolommen, dit resulteert in een full table scan.
Gewijzigd op 22/02/2015 12:51:18 door Ger van Steenderen
 
John D

John D

22/02/2015 12:45:52
Quote Anchor link
Joni Fleischer op 22/02/2015 11:50:43:
- Ten eerste worden ALLE uren geladen in 1 keer. (3743 stuks)
- Daarna wordt er per record gekeken of ze gegroepeerd kunnen worden
- daarna wordt van elke record gekeken hoeveel uur ze hebben gemaakt totaal in een week
- Deze worden opgeteld en gegroepeerd.
3743 stuks geladen en opgeteld en gegroepeerd: Dat laatste, opgeteld en gegroepeerd, gebeurt dat in PHP of in MySQL?
Je kan er een efficiente query van maken die alles in 1x doet.
 
Joni Fleischer
Moderator

Joni Fleischer

22/02/2015 12:48:20
Quote Anchor link
@ John D
In PHP

Is die effeciente query degene die @Ger net post??


Toevoeging op 22/02/2015 12:53:05:

Dit is mijn script zeg maar:

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
$sql
= "
SELECT
    *
FROM
    hours
WHERE
    status = 'accept'
AND
    archive = 'no'
GROUP BY
    user_id, week_nr, YEAR(date_hours)
"
;

if(!$res = mysqli_query($mysqli, $sql))
{

    trigger_error('Fout in query: '.mysqli_error());
}

else
{
    while($row = mysqli_fetch_assoc($res))
    {

        
        $duedt         = explode("-",$row['date_hours']);
        $date         = mktime(0, 0, 0, $duedt[1], $duedt[2],$duedt[0]);
        
        $sql = "
        SELECT
            hours
        FROM
            hours
        WHERE
            user_id = "
.$row['user_id']."
        AND
            status = 'accept'
        AND
            week_nr = "
.$row['week_nr']."
        AND
            YEAR(date_hours) = "
.$duedt[0]."
        AND
            archive = 'no'
        "
;
        if($res2 = mysqli_query($mysqli, $sql))
        {

            $aantal_uur = array();
            while($hours = mysqli_fetch_assoc($res2)):
                $aantal_uur[] = ($hours['hours'] >= 0) ? $hours['hours'] : $hours['hours'] + 24;
            endwhile;
                                                    
        }

        
        $u_meta = "SELECT * FROM wp_usermeta WHERE user_id = '".$row['user_id']."'";
        if($result_meta = $mysqli->query($u_meta)):
            while($row_meta = mysqli_fetch_assoc($result_meta)):
                if($row_meta['meta_key'] == "first_name"): $voornaam = $row_meta['meta_value']; endif;
                if($row_meta['meta_key'] == "last_name"): $achternaam = $row_meta['meta_value']; endif;
            endwhile;
        endif;

                                    
        echo '
        <tr>
            <td>'
.$voornaam.' '.$achternaam.'</td>
            <td class="center">'
.$row['week_nr'].'</td>
            <td>'
.date('Y', $date).'</td>
            <td class="center">'
.array_sum($aantal_uur).'</td>
            <td class="center">
                <a class="btn btn-success btn-xs"
                href="'
.SITE_URL.'admin/details_uren_bekijken.php?id='.$row['user_id'].'&week_nr='.$row['week_nr'].'&jaar='.$duedt[0].'">
                    <span class="glyphicon glyphicon-eye-open"></span>  
                    Bekijken                                            
                </a>
            </td>
        </tr>
        '
;
    }
}

?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

22/02/2015 14:39:42
Quote Anchor link
Die twee queries kunnen in één. Ik zou zeggen plak die query van Ger eens in phpMyAdmin onder de SQL tab en zie wat je terugkrijgt.

De kunst is dat je een resultaat krijgt waarin alleen die (maar tevens alle) gegevens staan die je nodig hebt.
 
Eeyk Vd noot

Eeyk Vd noot

23/02/2015 10:16:51
Quote Anchor link
Kun je niet op jaar selecteren? dus een <select> box aanmaken en dan.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 $u_meta
= "SELECT * FROM wp_usermeta WHERE user_id = '".$row['user_id']."' AND YEAR = '".$_POST['jaartal']."'";
?>


dan hoef je ook niet data uit 2013 te laden, dat lijkt me niet nodig te zijn?
Gewijzigd op 23/02/2015 10:19:31 door Eeyk Vd noot
 



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.