Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/03/2011, 17h39   #1
Invité de passage
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 0
Points : 0
Par défaut Requete Mysql très lente

Bonjour,

Je rencontre un probleme avec une table de ma base.
Elle comporte 13000 enregistrements et lorsque je l'interroge avec la requete suivante:
Code sql :
1
2
3
4
5
 
SELECT c . *
FROM jos_concerts AS c
WHERE c.date >= '2011-03-16'
LIMIT 0 , 20

elle met 10secondes à afficher le résultat...

Voici la table:


Code sql :
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
CREATE TABLE IF NOT EXISTS `jos_lylo_concerts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_lieu` int(11) NOT NULL,
  `date` date NOT NULL,
  `heure` time NOT NULL,
  `paf` varchar(255) NOT NULL,
  `plateau` varchar(255) NOT NULL,
  `infos` varchar(255) NOT NULL,
  `style` int(5) NOT NULL,
  `style_parent` int(5) NOT NULL,
  `type_clubbing` int(1) NOT NULL,
  `type_jamsession` int(1) NOT NULL,
  `type_enfants` int(1) NOT NULL,
  `image` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `code_postal` varchar(20) NOT NULL,
  `departement` int(5) NOT NULL,
  `region` int(5) NOT NULL,
  `checked_out` int(11) NOT NULL,
  `checked_out_time` datetime NOT NULL,
  `last_update` datetime NOT NULL,
  `published` int(11) NOT NULL,
  `frontpage` int(1) NOT NULL,
  `ordering` int(11) NOT NULL,
  `params` text NOT NULL,
  `id_filemaker` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_style` (`style`),
  KEY `idx_date` (`date`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='table des concerts' AUTO_INCREMENT=29590 ;

Avez-vous une piste afin d'obtenir un temps de recherche plus convenable ?

Merci Beaucoup

David
Ancool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 18h26   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Ta question à déjà trouvé sa réponse par ici: http://stackoverflow.com/questions/9...field-in-mysql

Visiblement, la solution est d'utiliser une clause between.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 18h55   #3
Invité de passage
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 0
Points : 0
Merci pour ta réponse mais malheureusement ça ne change rien.

D'autant que BETWEN n'est pas ce que je cherche à faire puisque je cherche les données à partir d'une date et on pas entre deux dates.

J'ai séparé la date et l'heure... donc je ne travaille que sur la date.

J'ai essayé tous les exemples du lien mais sans succès, toujours aussi lent...

Je penche sur une optimisation des indexs mais là je sèche...
Ancool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2011, 21h57   #4
Invité de passage
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 0
Points : 0
Je cherche ... mais je viens de découvrir que quand je retirais les alias au nom de tables, le temps de chargement est nettement plus rapide ?!

Code sql :
1
2
3
4
SELECT *
FROM jos_concerts
WHERE date >= '2011-03-16'
LIMIT 0 , 20

une idée ?
Ancool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 03h34   #5
Invité de passage
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2011
Messages : 4
Points : 0
Points : 0
Mon problème est réglé...

Non seulement le fait d'ajouter des alias à mes noms de table augmetait le temps d'execution (???)

je viens de comprendre qu'il fallait indexer les champs présents dans une jointure.

Si ça peut aider.
Ancool est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 10h40   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Citation:
je viens de comprendre qu'il fallait indexer les champs présents dans une jointure.
C'est quoi le rapport avec ta requête de départ ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h11.


 
 
 
 
Partenaires

Hébergement Web