Pour optimiser une requete, la premiere des choses à faire, si la ou les tables comptent plusieurs miliers d’enregistrement avec des valeurs trés différentes, est de placer des index, de faire tourner et de supprimer les index non utilisés. Si vous avez exploré toute les possibilités des index, et que votre requete est toujours trop lente, la solution est la denormalisation. La dénormalisation doit être utilisée sans complexe dans les bases en lecture seule, sans mise à jour. Dans les bases transactionnelles, il est nécessaire de mettre en place des triggers pour assurer la cohérence de la base.
Imaginez deux tables en 3 eme forme normale.
element(idelement,nomelement)
structure(id, nom, idelement )
la dénormalisation consiste à garder element à l’identique et modifier structure de la façon suivante (2 eme forme normale):
structure(id,nom,idelement,nomelement)
ainsi la requete associant element et structure est instantannée…
SELECT id,nom,nomelement from structure.
bon developpement
pour aller plus loin, un debat : http://www.developpez.net/forums/showthread.php?t=6231