Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/06/2004, 22h44   #1
jlf
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 135
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 135
Points : 13
Points : 13
Par défaut IBSql et StoredProc

bonjour

j'ai encore une question neuneu :
parmi les compos IBX IBSql est beacoup plus rapide

est-il possible de l'utiliser pour executer une procédure stockée avec des input/output paramètres, et est-ce effectivement plus rapide qu'avec un IBStoredProc ?

bien amicalement
jlf
jlf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2004, 11h09   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
IBSQL est plus léger que IBDataSet ou IBQuery car il fait moins de choses.
Notamment il ne va pas pouvoir se connecter à un DataSource et donc aux composants de type DB.

MAIS MAIS..... Il y a plusieurs "mais" :
1-La différence de performance est infime
2-Si vous devez afficher un résultat, autant prendre un IBDataSet ou IBQuery car je ne suis pas certain que le code que vous allez devoir écrire pour afficher les données soit plus optimisé que le code des composants VCL...

L'optimisation c'est bien mais là la différence entre les composants est si faible qu'il faut être un expert pour pouvoir en tirer avantage...
Pour illustrer mes dires :

En théorie une Ferrari est plus rapide qu'une Subaru. Mettez Alain Prost dans la Subaru et un conducteur "normal" dans la ferrari et donnez le départ sur une route sinueuse de montagne....
Qui gagnera ??? la Ferrari qui techniquement est bien supérieure ? Non ne ne crois pas, car pour que la Ferrari gagne il aurait fallu quelle soit pilotée par un conducteur expérimenté...

Voilà ce que je pense sachant qu'en plus ce n'est pas tout à fait le même parrallèle car IBSQL ne fait pas tout ce que fait IBQuery ou IBDataSet.

Voilà c'est mon coup de gueule de la journée

Sinon pour répondre à la question, IBStoredProc est bien si la PS ne renvoie pas de liste et si vous n'avez pas besoin d'afficher le résultat. Sinon il vaut mieux passer pas un select ... from MaPS(aram); dans un IBQuery si vous voulez afficher le résultat ou dans un IBSQL si vous n'allez pas afficher le résultat (traitement par programme).
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2004, 11h27   #3
jlf
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 135
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 135
Points : 13
Points : 13
Citation:
IBSQL est plus léger que IBDataSet ou IBQuery car il fait moins de choses
[...]
MAIS MAIS..... Il y a plusieurs "mais"
merci Barbibule de ces précisions car on lit partout que IBSql est"beaucoup" plus rapide mais certaines nuances ne sont pas toujours très explicites
jlf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2004, 11h39   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Il est plus rapide car il fait moins de choses. Donc si ces choses qui sont fait en plus dans les composants IBQuery et IBDataSet ne vous servent pas prennez IBSQL sinon vous allez perdre votre temps à réinventer la poudre.

Pour simplifier le choix :
Pour les ordres Select :
Code :
1
2
3
4
5
6
7
1-Avez vous besoin d'afficher les données pour l'utilisateur final ?
  Oui
    1-1 L'utilisateur final a besoin de modifier ces données ?
      Oui : IBDataSet
      Non : IBQuery
 
  Non IBSQL
Pour les ordres updates ou insert ou delete que vous ne pouvez pas mettre dans le IBDataSet parce que vous faites un traitement bien particulier vous pouvezles mettres dans un IBSQL.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2004, 11h59   #5
jlf
Candidat au titre de Membre du Club
 
Inscription : juillet 2002
Messages : 135
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 135
Points : 13
Points : 13
Citation:
1-Avez vous besoin d'afficher les données pour l'utilisateur final ?
Oui
1-1 L'utilisateur final a besoin de modifier ces données ?
Oui : IBDataSet
Non : IBQuery
en édition de tables IBDataset est préférable à IBQuery + IBUpdateSQL ?
jlf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2004, 14h03   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Oui car en fait le IBQuery a été créé dans un soucis de faciliter les application BDE. IBQuery est basé sur le composant IBDataSet auquel on a masqué la partie Update...

Donc plutot que d'utiliser un IBQuery + IBUpdate utilisez le IBDataSet.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h03.


 
 
 
 
Partenaires

Hébergement Web