Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1733 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requetes SQL: choix entre 2 methodes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requetes SQL: choix entre 2 methodes

n°1348461
welcominh
Posté le 18-04-2006 à 00:48:13  profilanswer
 

Bonjour,  
 
J'aurais quelques questions. La premiere est très conne je l'avoue mais je demande quelque précisions:
- Une requete sql simple du genre "select * from nom_table" est-elle plus rapide qu'une requete un peu plus "compliquée" du genre "select * from table1,table2 where table1.id=table2.nom order by table2.nom asc" ? si oui ce gain de temps est-il significatif?
 
- sur le lien suivant http://welcominh2.free.fr/index.ph [...] p&lettre=f, vous pouvez voir des albums avec les liens correspondants. Donc une table album, et une autre table nommé lien. Sur cette page, j'ai compté 13 requetes sql: 1 pour récupérer tous les albums, 12 pour récupérer les liens de chaque album (12 albums sur la page).  
Ce ne sont que des requetes simples. (avec une seule condition et pas de jointure) Gagnerai-je en performances à ne faire qu'une requete (qui comporte 2 conditions et 1 jointure) ?
 
merci pour votre aide  :jap:


Message édité par welcominh le 18-04-2006 à 00:50:57

---------------
Direct-download.com, le moteur de recherche pour Mega
mood
Publicité
Posté le 18-04-2006 à 00:48:13  profilanswer
 

n°1348500
olivthill
Posté le 18-04-2006 à 07:43:04  profilanswer
 

Pour optimiser il faut mesurer.
 
Les prédictions ne sont pas toujours fiables parce qu'il y a beaucoup d'éléments qui rentrent en jeu.
 
D'une manière général, un mouvement d'octets sur un réseau est 10 à 1000 fois plus lent qu'un mouvement d'octets entre le disque et la mémoire, lequel mouvement est 10 à 1000 fois plus lent qu'un mouvement entre la mémoire et le micro processeur.
 
Pour les deux questions, il ne devrait pas y avoir beaucoup de différences, parce que les volumes devraient être à peu près les mêmes qu'il y ait une ou deux tables, qu'il y ait deux ou treize requêtes.

n°1352607
welcominh
Posté le 24-04-2006 à 11:55:08  profilanswer
 

olivthill a écrit :


Pour les deux questions, il ne devrait pas y avoir beaucoup de différences, parce que les volumes devraient être à peu près les mêmes qu'il y ait une ou deux tables, qu'il y ait deux ou treize requêtes.


Je pensais au départ que faire 13 requêtes portant sur X volumes de données était plus lent que 1 requete portant sur le même X volume de données.  :sweat:  
Parce que le temps d'accès ne représente pas aussi une partie du temps de réponse? si on multiplie ce temps d'accès par 13  :??:


---------------
Direct-download.com, le moteur de recherche pour Mega
n°1352612
olivthill
Posté le 24-04-2006 à 12:01:48  profilanswer
 

Est-ce que c'est plus lent ?
Est-ce que c'est significativement plus lent ?
 
Je n'en sais rien avec certitude. Les temps réponse dépendent de beaucoup de facteurs, pas seulement du principe général de l'algorithme.
 
Il faut mesurer.

n°1352664
welcominh
Posté le 24-04-2006 à 13:45:23  profilanswer
 

olivthill a écrit :

 
Il faut mesurer.


OK je vais essayer ca. Il me semble que phpMyAdmin me donne les temps de réponse je crois. Vais calculer tout ca...
 
merci  :jap:  


---------------
Direct-download.com, le moteur de recherche pour Mega
n°1354337
darkfrost
Posté le 26-04-2006 à 14:15:12  profilanswer
 

Sans certitude :
 
Une requete SELECT FROM WHERE ORDER BY est-elle plus lente qu'un SELECT FROM ?
La logique voudrait que oui. Mais d'une maniere absolument pas significative (enfin dans le cadre d'une table avec un nombre d'enregistrement modéré ou d'index bien mis en place).
 
Une requete avec 2 conditions et 1 jointure vaut elle mieux que 13 requetes simple.
Pour moi, oui, cette fois-ci de maniere plus significative.
Pourquoi ?
Tout simplement parce que comme je te l'ai dit plus haut, d'un point de vue traitement en mémoire dans le SGBD, à ce niveau de complexité, ce n'est pas significatif. Ce qui va être significatif, c'est que dans un cas, tu vas envoyer la requete une fois, et recevoir une réponse, soit un seul appel à la base. Dans l'autre cas, tu vas envoyer treize fois une requete, et recevoir treize fois une réponse. Soit 13 appels à la base.  
 
Dans les deux cas, la taille totale des réponses sera identique, par contre, dans le deuxieme cas de figure, la taille totale des requetes sera plus grande que dans le premier cas.
 
En résumant, avec 13 requetes simple, tu fais 12 accès à la base supplémentaire, et tu fais transiter plus de données en terme d'octets. Pour peu que ton serveur de base de données et ton serveur Web ne soit pas le même, avec la lenteur du passage des octets par le réseau, ton temps devient significatif ;) !
 
D'ou l'interet des procedures stockées également, qui te permette de limiter les accès à la base ;) !
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requetes SQL: choix entre 2 methodes

 

Sujets relatifs
Le '%' du SQL existe-t-il en javascriptFonction SQL => Enregistrement au Hasard
dans un sujet d'examen (SQL)"Reconstruction" d'un site. Choix de portail php
[Mainframe OS390] SQL et date dans un JCL[VBS] Probleme avec SQL - timeout
Servlets et requêtes - Question basique (?)[SQL] comment specifier la longueur d'une donnée ?
Comment gérer un code retour d'une procédure SQL serveur en VBSite multilangue et base SQL ...
Plus de sujets relatifs à : requetes SQL: choix entre 2 methodes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR