Fonctions VS requêtes SQL .. le plus rapide ?

WRInaute passionné
Bonjour,

Question du jour :

Qu'est ce qui est le plus rapide : une fonction ou une requête SQl selon vous ?

Par exemple si on prend la liste des villes de France basé sur le code postal:

Choix 1:
1ere requête qui affiche à partir d'une table A le code postal puis seconde requête à partir d'une table B qui permet d'afficher le nom de la ville correspondant au code postal.

Choix 2:
1ere requête qui affiche à partir d'une table A le code postal puis une fonction sur le code postal qui va afficher le nom de la ville à partir d'un tableau (ex: cherche_ville($code_postal) ) .

Merci
 
WRInaute accro
Choix 3:
Une requête qui affiche à partir d'une table A le code postal et une jointure (LEFT JOIN) avec une table B qui permet d'afficher le nom de la ville correspondant au code postal.

Pour la rapidité je ne sais pas il faut faire des tests ;)
 
WRInaute passionné
spout a dit:
Choix 3:
Une requête qui affiche à partir d'une table A le code postal et une jointure (LEFT JOIN) avec une table B qui permet d'afficher le nom de la ville correspondant au code postal.

Pour la rapidité je ne sais pas il faut faire des tests ;)

Je pense aussi, mais il ne faut pas oublier que plusieurs villes peuvent avoir le même code postal... Du coup, tu seras peut être quand même obligé d'utiliser les deux...

Un première requête avec le LEFT JOIN qui va te sortir la (ou les villes correspondantes au CP) et ensuite:

si une seule ville (pas de problème, tu l'affiches directement)
si plusieurs villes, tu affiches un petit select

J'ai bon?
 
WRInaute passionné
hargggggg, pourquoi faut il toujours qu'il y est un choix 3 :mrgreen: !!

Compte tenu que j'ai en BD uniquement les codes postaux (entré par le client) lors de l'enregistrement, j'ai tendance à opter pour le choix 2 ... Le choix 3 m'obligerait à insérer en bd toutes les villes+code postaux (près de 40 000 enregistrements) et créer la requête adéquate (avec jointure) que je suis loin de maitriser...

Ceci dit, merci de vos réponses.
 
Nouveau WRInaute
la liste des villes et cp se trouve facilement sur le web en csv que tu n'as plus qu'a importer (je n'ai pas de lien sous la main mais j'ai ca pour la belgique) ca pourrait certainement t'aider
 
WRInaute accro
Il y a beaucoup de codes postaux qui couvrent plusieurs villes... Ce n'est donc pas une bonne idée de ne stocker que le CP.

Jacques.
 
WRInaute accro
Pas mieux, pourquoi 2 tables ?
Question qui nous amène à la solution 4 :


- Une table A qui contient au moins les champs

id / cp / ville

puis une requête qui récupère depuis la table A le code postal & la ville en un coup

... non ?
 
WRInaute accro
S'il n'y avait qu'une seule ville pour un CP, ça pourrait avoir un sens (ce serait même fortement conseillé). Mais comme ce n'est pas le cas, ça n'a pas beaucoup de sens, puisque le CP seul ne permet pas de trouver la ville. La question maintenant est de savoir quel est le but du jeu ici: s'il s'agit de sortir une adresse complète, alors pour certains CP ce sera facile, pour d'autres ça va poser un problème, et il faudra une sélection manuelle parmi les choix disponibles (ou alors faire appel à des bases autrement plus complètes pour recouper le reste de l'adresse, ou le nom, ou le numéro de téléphone pour trouver la bonne ville).

Pour info, il y a plus de 36000 communes en France, mais seulement environ 6000 codes postaux géographiques (le reste ce sont des CEDEX etc.). Il y a moins de 2000 CP qui correspondent à une seule ville, et plus de 1000 qui ont plus de 10 communes différentes rattachées, le record étant de 46 communes pour un seul code postal d'après la base que j'ai sous la main.

Jacques.
 
WRInaute accro
jcaron a dit:
S'il n'y avait qu'une seule ville pour un CP, ça pourrait avoir un sens (ce serait même fortement conseillé). Mais comme ce n'est pas le cas, ça n'a pas beaucoup de sens, puisque le CP seul ne permet pas de trouver la ville.
D'ou l'identification par la clé primaire "id", non ? A moins que ta remarque ne se réfère pas à la solution de ne prendre qu'une table :mrgreen:
 
WRInaute accro
Ca se référait au fait de ne stocker que le CP et d'utiliser une autre table pour faire la correspondance CP/ville.

Jacques.
 
Discussions similaires
Haut