Zware querys verbeteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Data Analyst / SAS Developer / Marketing Automatio

Functieomschrijving Wil jij werken of het snijvlak van IT, data en marketing? Begrijp jij hoe waardevol data is voor bedrijven en wil jij jezelf verder ontwikkelen in een uitdagende en dynamische omgeving bij één van de grootste financiële dienstverleners van Nederland? Solliciteer dan nu! De focus ligt op het analyseren en verbeteren/automatiseren van de technische kant van Data Marketing. Je werkzaamheden zullen concreet bestaan uit het volgende: Programmeren van extra opties in SAS CI Studio zodat marketingcampagnes verder geautomatiseerd kunnen worden; Nieuwe functionaliteiten toevoegen aan SAS CI Studio; Programmeren van automatiseringstools waarmee de juiste campagnes richting de juiste zakelijke klanten

Bekijk vacature »

Frontend developer

Gezocht: Medior/Senior Front-end developer Word jij enthousiast van het verbeteren van de user-experience en het innoveren van onze webshops? Ben jij opzoek naar een team waarin er gewerkt wordt met plezier en succes wordt gevierd? Dan zou dit je kans zijn! Voor een van de beste webshops van Nederland met bijna 3 miljoen klanten zijn we opzoek naar een medior frontend developer. Je bent samen met de rest van het SCRUM team verantwoordelijk voor het bouwen van nieuwe features in onze webshop en alles in een nieuw jasje te steken! Daarnaast krijg je de kans om zelf projecten op te

Bekijk vacature »

Business Intelligence Developer vacature

Jij ben niet bang om hard te werken. Uitdagingen zijn welkom. En problemen? Die zijn er om opgelost te worden of, nog beter, om voorkomen te worden! Voor jij aan de slag gaat met het ontwerpen van BI- en DWH-oplossingen, leg je eerst je oor te luister bij de klant. Zo weet jij wat de klant wil, en hoe jouw ontwerp eruit moet komen te zien. Simpel! Althans… met jouw Developer-kwaliteiten wel! Over deze BI vacature Als Business Intelligence Developer ga je zowel op locatie bij de klant aan de slag, als op een van de Sogeti-locaties. Je analyseert de

Bekijk vacature »

Oracle SOA-OSB Developer

Jouw uitdaging als Oracle SOA-OSB Developer Integratie is het hart in alle projecten. Zowel on-premise als in de Cloud of met hybride oplossingen kom je Oracle SOA Suite en de Oracle Service Bus bij vele klanten tegen. Jij ben als SOA-OSB ontwikkelaar onderdeel van dat integratie hart en zorg je dat binnen Oracle en niet-Oracle implementaties dat integraties zo efficiënt en onderhoudbaar mogelijk worden gerealiseerd. Je werkt op een prettige manier samen in teams met ervaren professionals van Capgemini middel SCRUM/Agile. Met jouw specialistische integratie kennis voeg je concrete waarde toe door je hands-on ervaring. Met jouw overzicht en sterke

Bekijk vacature »

C++ Developer / Productontwikkeling / Starter

Functieomschrijving Ben jij als C++ Developer een starter op de arbeidsmarkt en wil je aan de slag voor een productontwikkelaar met een positieve maatschappelijke impact in de regio van Utrecht? Werk je graag voor een echte soft- en hardwareclub en heb jij affiniteit met embedded development? Lees dan snel verder! Het ontwikkelen van software op een embedded Linux platform; Het ontwikkelen van C++ software dat moet voldoen aan hoge kwaliteitseisen (tegen embedded aan); Je participeert in diverse projecten waar je werkt aan software design, implementatie, testing en documentatie; Het testen van code om kwaliteit te waarborgen (unit test); Wanneer je

Bekijk vacature »

Test Developer

With headquarters based in the Netherlands, this international company is looking for a Test Developer to take care of the front-end and back-end testing. There are 15 testers in your chapter who work in 20 different Product Scrum teams. They have a portfolio with many e-Commerce applications/software to build, manage and adjust to deliver across all countries. The Test Developer will be working in a high performance culture with best practices in place. Every two weeks there is a sprint and delivery. They have 40+ websites with different backgrounds, so you must be experienced in testing multiple different websites. The

Bekijk vacature »

Front-End Developer / JavaScript/ React/ 4300 euro

Functieomschrijving Ben jij een front-end developer die niets van de wereld wil missen? Wil jij dat jouw werkzaamheden zichtbaar zijn voor een groot publiek? Beschik jij over kennis van de modernste technieken en ben je in staat snel te switchen tussen verschillende projecten? Lees dan snel verder! Het ontwikkelen van applicaties (25%) en websites (75%) met behulp van JavaScript, React, jQuery, SASS en Git; Werken aan lange termijn projecten; Oppakken van ad hoc activiteiten en processen; Nieuwe ontwikkelingen in de gaten houden en toepassen; Analytisch en kritisch meedenken over verbeteringen in tools en werkwijzen. Functie-eisen Je hebt HBO/WO werk- en

Bekijk vacature »

Software Developer / Sitecore / Lead / Zorgsector

Functieomschrijving Ben jij een Software developer met CMS (bij voorkeur Sitecore) ervaring en wil jij de volgende stap in je carrière maken naar een rol als Lead? Wil jij technisch verantwoordelijk zijn, 2 junior developer begeleiden en ook nog eens maatschappelijk verantwoord bezig zijn door zorgverlening toegankelijker te maken? Lees dan nu verder! Het ontwikkelen van nieuwe functionaliteiten en het doorvoeren van wijzigingen op het Sitecore platform; Het uitvoeren van onderhouds- en beheerwerkzaamheden m.b.t. Sitecore; Het uitvoeren van testwerkzaamheden; Het opstellen van technische documentatie; Het adviseren van de organisatie en jouw teamleden op jouw vakgebied; Het beoordelen en accepteren van

Bekijk vacature »

Full stack C# software developer, domotica met maa

Voor een bedrijf in de regio Hendrik Ido Ambacht zijn we op zoek naar een fullstack developer. Het gaat hier om een bedrijf dat systemen ontwikkeld die via domotica oplossing bieden voor maatschappelijke instellingen. Zo verwerken hun systemen meldingen waarover ze rapporteren, maar ook zorgen ze voor de automatisering van toezicht. Het systeem bestaat uit apps, web interfaces, backend en BI rapportage tools. Het gaat het hier om een MKB bedrijf van circa 70 mensen met een team van 5 developers. Bestaande uit hardware, embedded en backend developers. Momenteel is er daarom sterke behoefte aan iemand die zowel back- als

Bekijk vacature »

Senior Full-stack Developer

Senior Full-stack Developer DearNova, Vianen Werken bij DearNova is anders! Omdat wij zelfsturend werken krijg je veel verantwoordelijkheid en alle vrijheid om jouw ideeën door te voeren. Niet managers, maar jij en je team nemen de beslissingen die de toekomst van DearNova bepalen. Eigen verantwoordelijkheid en autonomie zijn voor ons geen lege slogans maar kernwaarden die we ook in de praktijk uitvoeren. Samen met je collega’s werk je voor toonaangevende klanten. We willen de beste zijn, dus de lat ligt hoog. Senior Full-stack Developer Als senior full-stack developer ben jij verantwoordelijk voor de technische keuzes die gemaakt worden binnen een

Bekijk vacature »

Developer / Integratie / BizTalk / Qlikview

Functieomschrijving Heb jij als developer ervaring met integratieontwikkeling of zou jij je hier verder in willen verdiepen? Werk jij graag in een vooruitstrevende organisatie met een complexe omgeving? Reageer dan op deze vacature! Ontwikkeling binnen en beheer van BizTalk en Qlikview. Ontwikkelen van nieuwe datakoppelingen. Omzetting van Functioneel Ontwerp naar een Technisch Ontwerp. Ontwikkelen en beheren van SQL interfaces en webservices. Aanreiken en uitvoeren van verbetervoorstellen en proactief beheer. Waar nodig contacten onderhouden met externe leveranciers en interne klanten. Functie-eisen Je hebt HBO werk- en denkniveau. Je hebt ervaring met development (bij voorkeur .NET / BizTalk). Je hebt affiniteit met

Bekijk vacature »

.NET Developer

.NET Developer De uitgebreide versie Jij hebt ruim twee jaar ervaring als developer. Nu wil je graag je tanden zetten in nog complexere projecten. Samen met je team bereik je nieuwe hoogtes en zelfstandig maak je meters. Je hebt behoefte aan collegae die jou alles leren op het gebied van technologie maar wilt tegelijkertijd ook graag je eigen opgedane kennis delen. Alles wat vandaag nog onbekend is, moet je morgen toepassen in de volgende uitdaging en dàt is wat jou scherp houdt. Je hebt geen zin in een 60-urige werkweek maar haalt wel plezier uit zo nu en dan een

Bekijk vacature »

Noordoost Java Developer vacature

Java Developer Noordoost Word onderdeel van een topteam met ervaren Java Developers. Loop voorop in de ontwikkelingen en help mee innoveren. Focus op Java Wij bouwen State of the Art applicaties met de nieuwste Java technologie en frameworks. Dit doen we door ons te richten op de open source-oplossingen binnen de wereld van Java, alle nieuwe ontwikkelingen te volgen en onze kennis te delen binnen onze eigen Java Community. Dit betekent bijvoorbeeld dat we aanwezig zijn op veel conferenties; Oracle Code One, Devoxx en JFall. We organiseren ook onze eigen collegiale sessies en hackatons waar we kennis en plezier combineren.

Bekijk vacature »

Full Stack Developer

Als full stack developer werk je in een agile omgeving die vernieuwende oplossingen ontwikkelt voor onze klanten (werkgevers, werknemers en pensioendeelnemers). Dit doe je met behulp vernieuwende technieken zoals AWS, Lambda, API Gateway en CI/CD. De rol Jouw rol richt zich op de full stack ontwikkeling van applicaties voor onze klanten (werkgevers, werknemers en pensioendeelnemers). Je denkt actief mee met het team en de stakeholders om oplossingen effectief, efficiënt, schaalbaar en toekomstbestendig in te richten. Samen met jouw multidisciplinaire team ondersteun je bij de realisatie van oplossingen die bijdragen aan het verbeteren van de dienstverlening aan onze klanten: zo’n 2

Bekijk vacature »

Technisch Ontwerper / Applicatieontwikkelaar max.

Op woensdag 6 november organiseert CIMSOLUTIONS op 7 locaties in Nederland het ICT Professional Event. Tijdens deze avond kun je naast een hapje en een drankje onze sfeer komen proeven. Maak kennis met CIMSOLUTIONS, onze collega’s en beleef de ervaringen van onze ICT specialisten én de projecten waar zij het verschil maken. Kijk voor meer informatie en/of aanmelden op: https://www.cimsolutions.nl/nl/cimsolutions-ict-professionals-event Wie zoeken we? Je bent de beste in je vak of hebt de ambitie en de potentie om de beste te worden. Je hebt de passie om nieuwe technologieën te blijven leren en continu jezelf te ontwikkelen. Je hebt de

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

20/11/2019 11:14:57
 
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.