dièse Posté 9 Mars 2006 Partager Posté 9 Mars 2006 Bonjour, Faire une requête sur 2 tables quand la jointure est faite entre 2 champs de types différents (caractère/numérique) c'est pas joli joli mais c'est possible . Est-ce que quelqu'un pourrait me certifier que ce type de jointure a un impact négatif en terme de performances ? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
V0r_X Posté 9 Mars 2006 Partager Posté 9 Mars 2006 (modifié) Salut, Je ne sais pas si MySQL possède des fonctions de transtypage. Enfin, comme depuis la version 5 tu peux écrire tes fonctions, cela reste faisable. Evidemment, au niveau des performances, puisque tu dois, en plus de la jointure effectuer un transtypage, ta requête sera moins rapide qu'une jointure classique. Pourrais-tu décrire tes tables ainsi que la requête pour qu'on y jette un oeil ? Ca m'étonne que tu doives faire ce genre de jointure sur deux champs de types différents. Cordialament Modifié 9 Mars 2006 par V0r_X Lien vers le commentaire Partager sur d’autres sites More sharing options...
dièse Posté 9 Mars 2006 Auteur Partager Posté 9 Mars 2006 (modifié) Rien n'est jamais obligatoire mais je m'interroge . J'aimerai justement savoir en quoi consiste ce transtypage, et surtout savoir si il n'est pas effectuer de manière systématique sur tous les champs. Car si tel est le cas, il n'y a aucune perte de performance avec ce genre de jointure. Modifié 9 Mars 2006 par dièse Lien vers le commentaire Partager sur d’autres sites More sharing options...
V0r_X Posté 9 Mars 2006 Partager Posté 9 Mars 2006 Je ne pense pas que MySQL transtype les données automatiquement. Tu peux toujours essayer dans phpMyAdmin (ou autre) ta requête, et tu verras bien si tu as des messages d'erreur. Je persiste donc à te conssiller d'écrire une fonction pour le transtypage, si tu tournes sous MySQL 5. Dans le cas contraire, cherches dans le manuel, tu trouveras sûrement des fonctions qui t'aideront. Lien vers le commentaire Partager sur d’autres sites More sharing options...
V0r_X Posté 9 Mars 2006 Partager Posté 9 Mars 2006 Dans la documentation, j'ai trouvé la réponse à ta question. Je dois te présenter mes excuses. MySQL transtype en effet les chaînes de caratères en entiers lors des comparaisons. Par exemple, tu peux écrire des trucs comme '1' < 3, ou '0' = 0. Acceptes mes excuses, j'ai, comme à l'accoutumée, plus compté sur ce que je croyais vrai que sur la doc Le prochain coup, je lirai la doc avant de poster sur un forum Lien vers le commentaire Partager sur d’autres sites More sharing options...
dièse Posté 9 Mars 2006 Auteur Partager Posté 9 Mars 2006 Si j'ai posé la question sur le forum, c'est que j'avais auparavant cherché dans la doc mais que je n'avais rien trouvé. Je n'avais pas pensé à regarder la section sur les opérateur... c'est donc moi qui te remercie . La conclusion est donc bien que ce type de requête est plus lourde. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant