Besoin de précision sur JOIN
Posté : 22 avr. 2008, 10:41
Bonjour à tous,
J'ai 2 tables sous mySQL: xtra_entreprise (5000 lignes) & xtra_employes (17500 lignes).
Par le biais d'un JOIN, j'essaye d'afficher toutes les entreprises qui correspondent à un critère avec leur employés associés. Je fais :
Cette requete met 0.1s à s'executer mais les entreprises qui n'ont pas d'employés ne sont pas affichées.
Si je fais l'inverse avec un right JOIN, la requete met 15s a s'executer!!!
Ce que je ne comprends pas c'est qu'il est plus rapide d'afficher tous les profils qui ont une société plutot que toutes les sociétés qui ont des profils alors qu'il y en a 3 fois moins...
Est-il possible de modifier cela pour qu'en une seule requete, je puisse avoir la liste des entreprises voulues avec le total des employés correspondants a certains critères (avec un COUNT ?) ?
j'espère avoir été assez clair...
J'ai 2 tables sous mySQL: xtra_entreprise (5000 lignes) & xtra_employes (17500 lignes).
Par le biais d'un JOIN, j'essaye d'afficher toutes les entreprises qui correspondent à un critère avec leur employés associés. Je fais :
Code : Tout sélectionner
-- phpMyAdmin SQL Dump
-- version 2.8.1
-- http://www.phpmyadmin.net
--
-- Structure de la table `xtra_entreprise`
--
CREATE TABLE `xtra_entreprise` (
`id_entreprise` int(11) NOT NULL auto_increment,
`nom_entreprise` varchar(255) default NULL,
`departement` varchar(40) default NULL,
`cibler_pour` text,
`ne_pas_cibler_pour` text,
`identifie` text,
PRIMARY KEY (`id_entreprise`)
);
CREATE TABLE `xtra_employes` (
`id_employes` int(11) NOT NULL auto_increment,
`id_entreprise` int(11) default NULL,
`C_nom_prenom` varchar(255) default NULL,
`codification_fonction` text,
PRIMARY KEY (`id_employes`)
)
select
xtra_entreprise.nom_entreprise,
xtra_entreprise.id_entreprise,
xtra_entreprise.departement,
xtra_entreprise.cibler_pour,
xtra_entreprise.ne_pas_cibler_pour,
xtra_entreprise.identifie,
xtra_employes.id_employes,
xtra_employes.C_nom_prenom,
xtra_employes.C_codification_metier
from xtra_employes
left outer join xtra_entreprise
on xtra_entreprise.id_entreprise = xtra_employes.id_entreprise
ORDER BY departement ASC, nom_entreprise ASCSi je fais l'inverse avec un right JOIN, la requete met 15s a s'executer!!!
Ce que je ne comprends pas c'est qu'il est plus rapide d'afficher tous les profils qui ont une société plutot que toutes les sociétés qui ont des profils alors qu'il y en a 3 fois moins...
Est-il possible de modifier cela pour qu'en une seule requete, je puisse avoir la liste des entreprises voulues avec le total des employés correspondants a certains critères (avec un COUNT ?) ?
j'espère avoir été assez clair...