Bonjour,
j'ai un problème de vitesse sur une requete, pouvez vous m'aider?
voici mes tables:
Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE TABLE `site_domaines` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id du (sous)domaine', `nom` varchar(10) NOT NULL COMMENT 'nom du domaine', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='Cette table contient la liste des (sous)domaine du site'
Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE `site_sections` ( `domaine_id` int(10) unsigned NOT NULL COMMENT 'id du (sous)domaine', `section_id` int(10) unsigned NOT NULL COMMENT 'id de la section', `nom` varchar(20) NOT NULL COMMENT 'nom de la section', PRIMARY KEY (`domaine_id`,`section_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Cette table contient la liste des sections du site'
Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE `site_urls` ( `domaine_id` int(10) unsigned NOT NULL COMMENT 'id du (sous)domaine', `section_id` int(10) unsigned NOT NULL COMMENT 'id de la section dans le domaine', `item_id` int(10) unsigned NOT NULL COMMENT 'id de l''element dans la section', `language_id` int(10) unsigned NOT NULL COMMENT 'id du language de l''url', `url` text NOT NULL COMMENT 'url de la page', `modified` datetime DEFAULT CURRENT_TIMESTAMP COMMENT 'date de mise à jour de l''article', PRIMARY KEY (`domaine_id`,`section_id`,`item_id`,`language_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Cette table contient toutes les urls du site'
item_id sert à lier les urls d'un meme article en plusieurs langues
la table site_urls contient toutes les urls du site pour les pages en français et les pages en anglais
ET voici la requete:
Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT sufr.url fr, suen.url en, su.modified FROM site_urls su LEFT JOIN site_urls sufr ON sufr.domaine_id = su.domaine_id AND sufr.section_id = su.section_id AND sufr.item_id = su.item_id AND sufr.language_id = 1 LEFT JOIN site_urls suen ON sufr.domaine_id = su.domaine_id AND suen.section_id = su.section_id AND suen.item_id = su.item_id AND suen.language_id = 2 WHERE su.domaine_id = 1 AND su.section_id = 2 GROUP BY su.item_id ORDER BY su.modified DESC
Je cherche a obtenir la liste des urls d'une section du site avec les colonnes suivantes:
fr = url de la page en français,
en = url de la page en anglais,
modified = date de dernière modification (du couple français anglais).
La requete fonctionne correctement il me semble mais il me faut 27 secondes pour sortir 5000 lignes, je m'attendais a avoir un resultat en moins de 3 secondes.
Avez vous une idée du problème?
Merci d'avance
Partager