Versio

Query verkorten/versnellen

Overzicht Reageren

Eddy Erkelens

Eddy Erkelens

09/06/2009 19:23:00
Quote Anchor link
Ik heb onderstaande query.
Die werkt prima, in delen.
Theoretisch zou het ook gewoon moeten werken (met één AND ... NOT IN () werkt het wel, maak niet uit welke), maar phpMyAdmin geeft een heerlijke timeout.
Ook via php direct gebeurt dat.

Uiteraard is dit niet goed opgezet en van normalisatie heeft de database ook nooit gehoord. En ja: het is Mysql op MyIsam.
De database is 5 jaar geleden opgezet en opgestart en in die tijd stevig vervuild.
De query klopt zoals hieronder, maar is gewoon te traag.

Wie kan mij helpen hem te versnellen?

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
<?php

SELECT o.OrganisatieId, o.Naam, g.Account, g.Email, g.Nivo, g.NrIngelogd, g.Tijdstip_vorig
FROM tblOrganisatie AS o
LEFT JOIN tblGebruiker AS g
ON (g.OrganisatieId = o.OrganisatieID)
LEFT JOIN tblOrgPagina AS p
ON (o.OrganisatieId = p.OrganisatieID)
WHERE o.OrganisatieID IN
    (
    SELECT op.OrganisatieId
    FROM tblOrgPagina AS op
    WHERE op.datum_update = '00-00-00 00:00:00'
    AND op.OrganisatieId > 0
    AND op.OrganisatieId NOT IN
         (
         SELECT OrganisatieId
        FROM tblOrgPagina
        WHERE datum_update <> '00-00-00 00:00:00'
        GROUP BY OrganisatieId
        )
    AND op.OrganisatieId NOT IN
        (
        SELECT a.OrganisatieId
        FROM tblActiviteit AS a
        WHERE a.DatumToe < NOW() - INTERVAL 6 MONTH
        AND a.OrganisatieId > 0
        GROUP BY a.OrganisatieId
        )
    AND op.OrganisatieId NOT IN
        (
        SELECT n.OrganisatieId
        FROM tblNieuwsArtikel AS n
        WHERE n.DatumToe < NOW() - INTERVAL 6 MONTH
        AND n.OrganisatieId > 0
        GROUP BY n.OrganisatieId
        )
    GROUP BY op.OrganisatieId
    ORDER BY op.datum_update ASC
    )
AND p.datum_update = '00-00-00 00:00:00'
GROUP BY o.OrganisatieId
ORDER BY g.Tijdstip_vorig
LIMIT 0, 100

?>
 
PHP hulp

PHP hulp

25/05/2012 13:51:27
Gesponsorde koppelingen:
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

Get Adobe Flash player