Non en terme de performance tout dépénd du SGBD et sur Oracle ce genre d'affiramtion est fausse ! (même si le choix d'un number(38) peut être discuté) Je vous invite à lire les contributions de Pacman dans Vitesse exécution WHERE = selon type de donnée ainsi que le lien qu'il a posté pour ceux qui connaisse déjà Oracle.
Merci Waldar pour cette contribution plus pragmatique.
Non le ROWID est LA méthode d'accès à une table via un index sur Oracle.
Exemple avec la célèbre table table emp de scott :Le ROWID identifie un enregistrement d'une table dans la base de données, à partir de l'adresse physique du bloc et du numéro d'enregistrement dans le bloc. Il est utilisé principalement dans les indexes pour pointer sur l'enregistrement de la table, et dans les tables pour les pointeurs des chained rows. C'est le moyen le plus direct car il permet d'aller directement sur le bloc qui contient l'enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE "SCOTT"."EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10 BYTE), "JOB" VARCHAR2(9 BYTE), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE )C'est évidemment un identifiant interne à Oracle qu'un développeur n'utilisera que très rarement (voir jamais) dans son code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SQL> select * from scott.emp where empno = 7839; Execution Plan ---------------------------------------------------------- Plan hash value: 2949544139 -------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 38 | 1 (0)| 00:00:01 | | 1 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 38 | 1 (0)| 00:00:01 | |* 2 | INDEX UNIQUE SCAN | PK_EMP | 1 | | 0 (0)| 00:00:01 | --------------------------------------------------------------------------------------
Je suis bien évidemment totalement en accord avec le fond de l'article même si l'exemple des numéros de téléphones semblera quelque peu extremiste pour la plus part des lecteurs. Comme d'habitude tout dépend des besoins !
PS : Tiré d'un autre post que vous avez peut être vu :
Donc pas la peine de le basher sur "son" modèle alors qu'il n'y est pour rien (même s'il semble convaincu par le modèle de l'ERP en question alors que moi même après une très rapide lecture je le suis beaucoup moins...)
Partager