Zware querys verbeteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior .NET developer/ architect gezocht, api deve

Ben je een ervaren .NET developer en op zoek naar baan waarbij je je ook meer kunt gaan richten op architectuur? Binnen een leuke, sociale en betrokken werkomgeving? Met technieken als .NET Core en Azure? Dan zou deze baan wellicht iets voor jou kunnen zijn. Voor een organisatie in Rotterdam zijn we op zoek naar eens senior .NET ontwikkelaar/ architect. De organisatie bevindt zich in de financiële branche en is een van de grotere spelers in hun vakgebied. De organisatie bestaat uit circa 600 medewerkers en heeft verschillende vestigingen in Nederland. Het hoofdkantoor zit in Rotterdam en daar is ook

Bekijk vacature »

Web Developer

Help jij graag mee met het optimaliseren van ons platform? Solliciteer dan naar de functie Web Developer. Op ons hoofdkantoor in Amsterdam krijg je alle ruimte om je kwaliteiten te tonen. Jouw baan ChipSoft maakt breed gebruik van webtechnologie voor de ondersteuning van administratieve processen. Als ontwikkelaar ben je verantwoordelijk voor het onderhouden en verbeteren van de applicaties op ons platform. Jij richt je met name op het ontwikkelen van nieuwe applicaties en het onderhouden van de gebruikte programmatuur op ons platform. Denk hierbij aan e-learning en projectplanning. Jouw team Je komt op de 25ste verdieping van ons hoofdkantoor in

Bekijk vacature »

.NET Developer

FreshPublishers is een internationale, online nieuwsorganisatie. FreshPublishers is zich steeds verder aan het ontwikkelen en daarmee ook de software. Software Development voor FreshPublishers bevat onderhoud en uitbreidingen voor het content management systeem waarin de redacteuren artikelen schrijven, nakijken en publiceren. Jouw baan is het ontwerpen, schrijven en testen van nieuwe modules in dit systeem met een .NET backend. Functie eisen: C# .NET developer / Web development / MVC5 HBO- of WO-niveau Kennis van (SQL) databases Microsoft SQL Server ercaring Javascript ervaring (al dan niet met JQuery) Ervaring met vue.js of soortgelijk javascript framework Vloeiend in Nederlands en Engels (spraak) Ervaring

Bekijk vacature »

Starter Beta WO afgestudeerd traineeship Developer

Functieomschrijving Tijdens het traineeship krijg je de keuze om jezelf te ontwikkelen als developer. Welke richting (Front-end/Backend/Fullstack developer) dat mag jij zelf kiezen. Samen met met je collega's ga je kijken welke route het beste bij jou past en daar wordt een persoonlijk groeipad voor ontwikkeld. Ze zoeken wel mensen die (enige) ervaring hebben binnen development dus passie voor IT en programmeren is hier wel een must. Functie-eisen - Je hebt een afgeronde master of bachelor opleiding met béta component; - Je hebt kennis van een of meerdere programmeertalen; - Je bent creatief en denkt out-of-the-box; - Je bent gedreven

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 »

Full Stack Developer

Snelgroeiende webshop in omgeving Den Bosch zoekt (Magento) developer om nog meer gas te kunnen geven! Bij ChromeBurner gaan we hard! Momenteel zijn wij, onder andere doordat we wereldwijd opereren, de grootste motorkleding specialist van Nederland en met gemiddeld 50% groei per jaar zijn we hard op weg om één van de meest toonaangevende bedrijven in onze branche te worden wereldwijd. Onze ambities zijn groot, dus om deze groei verder te kunnen faciliteren willen wij ons team uitbreiden met een enthousiaste developer. Vanwege de snelle groei van het bedrijf, zowel in omzet als personeel, zijn er volop doorgroeimogelijkheden om je

Bekijk vacature »

Front-end developer React (Freelancer)

In this role, you have the opportunity to Participate in innovative Research projects where you will boost our innovations by enabling the implementation of application stacks on public cloud-based infrastructures. You will be asked to bring in your expertise in the AWS cloud technologies to support our teams in creating breakthrough innovations. You are responsible for • Responsible for the definition, design, implementation and integration systems in high quality, according to requirements and on time; - Comply and align with software development professionalism standards within the team (processes and methodologies, quality of requirements, design, coding and testing); - Carry out

Bekijk vacature »

OpenEdge Developer / #1 software leverancier binne

Functieomschrijving Ben jij een ervaren OpenEdge Developer die graag nog nieuwbouw ontwikkelt? Wil je daarnaast jouw hersenen kraken voor het automatiseren van complexe bedrijfsprocessen? Lees dan snel verder en kom erachter of deze rol als OpenEdge Developer iets voor jou is! Uitvoeren van analyses ter bevordering van de betrouwbaarheid en performance van de bedrijfskritische applicatie; Meedenken over de architectuur en tevens waarborgen van de OpenEdge architectuur; Troubleshooten van complexe incidenten; Je deelt graag je kennis aan je collega’s; Maken van ontwerpen, schrijven van documentatie en het testen van de OpenEdge applicatie; Implementeren van nieuwe functionaliteiten en het verzorgen van nazorg.

Bekijk vacature »

SQL Developer / BI / Miljoenen eindgebruikers

Functieomschrijving Altijd al aan de slag willen gaan als Senior SQL Developer bij één van de meest vooraanstaande verzekeraars in Nederland? Wil jij je richten op het bedenken, ontwerpen, bouwen en implementeren van uiteenlopende BI oplossingen vanuit data van miljoenen gebruikers met de Microsoft BI Stack, T-SQL, PowerShell en Datawarehousing? Lees dan nu verder! Analyseren, ontwerpen, ontwikkelen en documenteren van BI oplossingen en complexe BI applicaties (met tools als T-SQL, PowerShell, SAS, SSIS, BIML BODS en BOXI) Maken van technische ontwerpen, data analyses en adviseren over de datawarehouse; Ontwerpen van functionele specificaties voor de dashboards en rapportages; Schakelen met stakeholders

Bekijk vacature »

Software Developer / Maatwerk / 4GL / SQL

Functieomschrijving Heb jij ervaring met Software Development en wil je je graag verder ontwikkelen bij een internationaal bedrijf in regio Eindhoven? Lees dan snel verder! Software ontwikkeling met technieken als Magic XPA en DB2 relationele databases. Ontwikkelen van nieuwe onderdelen van het centrale (maatwerk) softwarepakket. Uitbreiden bestaande functies binnen het pakket. Wensen en eisen van gebruikers in kaart brengen. Meedraaien in projecten. Informatieanalyses maken en uitwerken. Jezelf ontwikkelen binnen de organisatie, bijvoorbeeld op het gebied van BI of integratie met behulp van SAP PI/PO. Ondersteunen van de helpdesk bij software issues. Functie-eisen 1 tot 3 jaar ervaring op het gebied

Bekijk vacature »

.NET developer / C# / Azure / Zorg

Functieomschrijving Ben jij een .NET Developer met minimaal 2-3 jaar ervaring en ben je toe aan de volgende stap in je carrière? Wil jij werken op het hoogste niveau en aan de slag gaan bij de .NET ontwikkel organisatie van Brabant? Dan is deze functie perfect voor jou! Als .NET Ontwikkelaar ga je: Programmeren van high-availability en high-security applicaties in C#; Samen met je teamgenoten nieuwe applicaties/diensten ontwikkelen in .NET; Overleggen met de informatie analisten en testers; Ontwikkelen van webservices (WCF); 20% van je tijd besteden aan innovatie; Deelnemen aan projecten om nieuwe ketenpartijen toe te voegen; Bouwen van unit

Bekijk vacature »

Front-end Developer WPF

Heb jij kennis en ervaring met WPF en C#? Ben je technisch en heb je goed gevoel voor design? Wil jij met jouw kennis de zorg verbeteren? Dan zijn wij op zoek naar jou! Jouw baan Als Front-end Developer bij Zorgplatform ga je werken aan de interface voor zorgprofessionals. Zorgplatform is een platform waarmee medische gegevens op een veilige manier uitgewisseld worden met andere instanties binnen de zorgsector. Zorgplatform ondersteunt onder andere het verwijzen van patiënten, het overdragen van patiënten en de gezamenlijke behandeling (shared care). Dit is hét nieuwe werken in de zorg. Met jouw oog voor design ga

Bekijk vacature »

Senior Java Developer / WebSphere / Architecture

Functieomschrijving Are you a team player that is proactive and isn’t afraid to share your opinion? Do you have experience with developing in Java and do you have experience with deploying applications in WebSphere? Then advance your career in one of the coolest and most challenging financial companies located in, The Netherlands! As a Senior Developer, you will work in a challenging environment: You will be maintaining the current Java7 / Oracle stack; You will be taking part in the architecture aspects of the new platform; You will be taking care of the offshore and onshore team contributions; You will

Bekijk vacature »

.NET Developer / C# / miljarden berichten / Zorgse

Functieomschrijving Zit jij aan je plafond als .NET C# Developer? Wil jij de stap maken naar dé .NET software organisatie van Tilburg? Lees dan nu verder! Bedrijfsomschrijving werken bij een organisatie waar je met het volgende in aanraking komt: High-intensity dataverkeer, meer dan 2,7 miljard berichten per jaar; Development aan .NET applicaties die maandelijks miljoenen euro's verwerken; Salaris als developer tot bijna 70.000 euro op jaarbasis; Geen partij in de omgeving van Tilburg die zo'n complex .NET applicatielandschap heeft; Werken aan meer dan 50 diensten, verdeeld over 10 Scrum teams; Focus op o.a.: C# en ASP.NET in een Agile organisatie;

Bekijk vacature »

Front-end Developer Vue.js Meewerkend voorman

Functieomschrijving Ben jij een ervaren Front-end Developer, bedreven in Vue.js en lijkt het jou gaaf om als meewerkend voorman verantwoordelijk te zijn voor de ontwikkeling van drie junior ontwikkelaars? Werk jij graag aan diverse projecten t.b.v. het vergroten van klant- en medewerkerbeleving? Lee dan snel verder! Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en api ontwerp; Participeren in

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

03/08/2020 17:37:34
 
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.