26-05-2009, 08:04 AM
Quelques remarques.
TRANSACT-SQL (ou T-SQL) est le nom donné à l'extension SQL propriétaire à Sybase/Microsoft. La syntaxes et les capacités su langage sont assez éloignées de MySQL.
T-SQL s'appuie sur une structure complexe, construisant et stockant dans un environnement SQL Server des plans de requêtes basés sur les statistiques de la BDD. MySQL propose(ra) une compatibilité avec la syntaxe sans atteindre toutes ses subtilités.
D'ailleurs, l'utilisation à outrance de IF, CASES et autres instructions conditionnelles lors de la récupération des données n'est pas la meilleure manière d'obtenir de bonnes performances. Les utiliser de manière procédurale par contre ne pose pas de problèmes.
Holy, dans l'exemple que tu donnes, je vois que tu as une sorte de règle.
Pattern couplé à Nation donne un multiplicateur pour Number
Pourquoi ne pas transformer cette règle en table et faire l'utiliser dans une jointure pour obtenir ton résultat ?
Avec cette table utilisée dans une jointure, tu peux calculer tes valeurs sans recourir aux IF. Ce sera plus naturel (et à terme surement plus performant) pour le moteur MySQL
TRANSACT-SQL (ou T-SQL) est le nom donné à l'extension SQL propriétaire à Sybase/Microsoft. La syntaxes et les capacités su langage sont assez éloignées de MySQL.
T-SQL s'appuie sur une structure complexe, construisant et stockant dans un environnement SQL Server des plans de requêtes basés sur les statistiques de la BDD. MySQL propose(ra) une compatibilité avec la syntaxe sans atteindre toutes ses subtilités.
D'ailleurs, l'utilisation à outrance de IF, CASES et autres instructions conditionnelles lors de la récupération des données n'est pas la meilleure manière d'obtenir de bonnes performances. Les utiliser de manière procédurale par contre ne pose pas de problèmes.
Holy, dans l'exemple que tu donnes, je vois que tu as une sorte de règle.
Pattern couplé à Nation donne un multiplicateur pour Number
Pourquoi ne pas transformer cette règle en table et faire l'utiliser dans une jointure pour obtenir ton résultat ?
Code :
Pattern | Nation | Coeff
----------------------------------
'sword' | 'marchand' | 1
'middlesword' | 'marchand' | 1
'sword' | 'guerrier' | 2
'middlesword' | 'guerrier' | 2
Avec cette table utilisée dans une jointure, tu peux calculer tes valeurs sans recourir aux IF. Ce sera plus naturel (et à terme surement plus performant) pour le moteur MySQL
Quand on te dit qu'un projet est terminé à 90%, prépare toi pour les 90% suivant
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC