Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
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 07/08/2007, 23h51   #1
Membre à l'essai
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 59
Points : 24
Points : 24
Par défaut PLS_INTEGER ou BINARY_INTEGER ?

http://www.developpez.net/forums/d96183/bases-donnees/oracle/pl-sql-difference-entre-integer-binary_integer/

Si je suis en 8i, j'utilise un simple compteur dans un FOR LOOP.

Qu'est-ce qui est préférable comme utilisation le PLS_INTEGER ou BINARY_INTEGER ?

Et pour quel(s) raison(s) ?

D'après ce que j'ai vu dans la doc, ce serait mieux le binary pour des raisons d'EXCEPTIONS raised? Au niveau tps d'exécution y a t il un autre avantage /désavantage pour un simple compteur?
Ujitsu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 08h58   #2
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
En ce qui concerne, la partie performance, faites un test avec quelques millions de boucles vides (avec l'instruction NULL) et comparez les résultats
des temps d'exécution.

En général, les problèmes de performances en PL/SQL sont plutôt liés au SQL utilisé et aux algorithmes: c'est bien plus le contenu de la boucle qui peut poser problème que le type de l'indice de boucle
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2007, 13h29   #3
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
note que dans Oracle 11g, il existe un nouveau type SIMPLE_INTEGER, qui est plus rapide et ne contient pas de NULL. Il ne contient pas d'exception, si tu ajoutes 1 à 2147483647 tu obtiens alors -2147483648.

Mais ça peut dramatiquement améliorer la performance
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2007, 13h44   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 453
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 453
Points : 4 217
Points : 4 217
Avec DBMS_PROFILER (10g - Donc je peux pas tester, je suis en 9)
Voici une partie du test de F Degrelle

Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE PROCEDURE TEST_PROFILER
IS
  TYPE TYP_TV1 IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER ;
  TYPE TYP_TV2 IS TABLE OF VARCHAR2(50) INDEX BY PLS_INTEGER ;  
  t1  TYP_TV1 ;
  t2  TYP_TV2 ;
BEGIN
  FOR i IN 1 .. 1000 Loop
     t1(i) := i ;
     t2(i) := i ;
  End Loop ;
END TEST_PROFILER ;
Code :
1
2
3
4
5
6
7
UNIT_NAME       OCCURED TOT_TIME          LINE TEXT
--------------- ------- ----------- ---------- ---------------------------------------------------
TEST_PROFILER         1     .000063          1 PROCEDURE TEST_PROFILER
TEST_PROFILER      1001     .000653          8   FOR i IN 1 .. 1000 Loop
TEST_PROFILER      1000     .006956          9   t1(i) := i ;
TEST_PROFILER      1000     .002220         10   t2(i) := i ;
TEST_PROFILER         1     .000065         12 END TEST_PROFILER ;
Citation:
As we can see, PLS_INTEGER type is 4/5 times faster than NUMBER
The NESTED TABLE INDEX BY PLS_INTEGER is 3 times faster than the INDEX BY BINARY_INTEGER
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2007, 22h20   #5
Membre à l'essai
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 59
Points : 24
Points : 24
Ok, merci.
Ujitsu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h30.


 
 
 
 
Partenaires

Hébergement Web