Bonjour,
Depuis un script PHP j'ai une erreur "Maximum execution time of 30 seconds exceeded" très probableemnt en raison d'une requête SQL sur une base MySQL qui pourrait être (grandement) améliorée.
Voici ma requête qui s'exécute environ 30 fois (une fois par jour d'un mois donné).
ici je demande les events qui ont lieu le 1er janvier 2007.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT pk_id FROM events_vk, plz_ptt WHERE '2007-01-01' BETWEEN date_start AND GREATEST(date_end, date_start)
ou
Dans ce cas deuxième cas tous les events qui ont lieu le 1er janvier 2007 et dont le code postal est compris entre 1000 et 2000.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT pk_id FROM events_vk, plz_ptt WHERE '2007-01-01' BETWEEN date_start AND GREATEST(date_end, date_start) AND (events_vk.fk_plz_ptt = plz_ptt.ExchangeKey) AND (plz_ptt.PostalCode >= 1000) AND (plz_ptt.PostalCode <= 2000)
La table events_vk gère des événements et j'utilise la table plz_ptt en jointure pour localiser les événements selon leur code postal. En effet la table plz_ptt contient 6723 lignes avec tous les codes postaux de Suisse.
Les deux tables sont reliées par la clé étrangère fk_plz_ptt de la table events_vk et la colonne (valeur unique) ExchangeKey de la table plz_ptt.
Comment améliorer ma requête pour pas que je dépasse ce délai attrbué à PHP? C'est donc une question d'optimisation de requête SQL, je sais...
Merci!
Partager