Optimisation requête multi jointures
Bonjour à toutes et à tous,
Je coinces depuis plusieurs heures sur cette requête et j'ai peur de ne pas m'y connaître assez pour résoudre le problème.
Ci-dessous la requête que je souhaites executer, mais j'obtiens cette erreur
Code:
1 2 3
| MySQL a répondu: Documentation
#1317 - Query execution was interrupted |
Code:
1 2 3 4 5 6 7 8
|
SELECT *
FROM `produit`
LEFT JOIN sous_produit on sous_produit.id_produit = produit.id_produit
JOIN produit_sous_rubrique ON produit_sous_rubrique.id_produit = produit.id_produit
JOIN produit_photo ON produit_photo.id_produit = produit.id_produit
JOIN prod_data_sous_rubriques ON prod_data_sous_rubriques.id_sous_rub = produit_sous_rubrique.id_sous_rub
#Le reste on s'en fiche, car d'après mes test le problème est au niveau des jointures. Le bug subsiste toujours |
J'ai simplifié au niveau du select * également, toujours le même soucis ^^ Donc le problème vient de mes jointures ...
Cette requête est ma requête de recherche de produit, donc en fonction de ma recherche je veux récupérer tous mes produits, les prix des mes produits (table sous_produit), les rubriques de mes produits.
J'ai vu la notion d'index donc je suppose que c'est par rapport aux clés primaires etc... Dans toutes mes tables j'ai créé la clé primaire et je m'en sert donc dans mes jointures, je suppose que c'est bon.
En tout cas je ne vois pas qu'est-ce qui cause la lenteur de cette requête.
Pour info :
1 produit = (1) sous_produit
1 produit = (n) produit_photo
1 produit = (n) produit_sous_rubrique
1 sous rubrique = (1) rubrique
1 rubrique = (n) sous_rubrique
Je vous remercie de votre aide :)
Code:
1 2 3 4 5 6 7 8 9 10
| --
-- Structure de la table `produit`
--
CREATE TABLE IF NOT EXISTS `produit` (
`id_produit` int(11) NOT NULL AUTO_INCREMENT,
`nom_prod` varchar(255) NOT NULL,
`date_creation` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id_produit`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11652 ; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
--
-- Structure de la table `produit_photo`
--
CREATE TABLE IF NOT EXISTS `produit_photo` (
`id_produit_photo` int(11) NOT NULL AUTO_INCREMENT,
`id_produit` int(11) NOT NULL,
`nom_photo` varchar(255) NOT NULL,
`id_couleur` int(11) NOT NULL,
PRIMARY KEY (`id_produit_photo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=16882 ; |
Code:
1 2 3 4 5 6 7 8 9 10
|
--
-- Structure de la table `prod_data_rubriques`
--
CREATE TABLE IF NOT EXISTS `prod_data_rubriques` (
`id_rub` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(80) NOT NULL,
PRIMARY KEY (`id_rub`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=85 ; |
Code:
1 2 3 4 5 6 7 8 9 10 11
|
--
-- Structure de la table `prod_data_sous_rubriques`
--
CREATE TABLE IF NOT EXISTS `prod_data_sous_rubriques` (
`id_sous_rub` int(11) NOT NULL AUTO_INCREMENT,
`id_rub` int(11) NOT NULL,
`nom` varchar(80) NOT NULL,
PRIMARY KEY (`id_sous_rub`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1311 ; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
--
-- Structure de la table `sous_produit`
--
CREATE TABLE IF NOT EXISTS `sous_produit` (
`id_coul_prod` int(11) NOT NULL AUTO_INCREMENT,
`id_produit` int(11) NOT NULL,
`qte_1` int(11) DEFAULT NULL,
`prix_achat_1` decimal(20,5) DEFAULT NULL,
PRIMARY KEY (`id_coul_prod`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=' ' AUTO_INCREMENT=41597 ; |