Bonjour,

Je rencontre un problème étrange, lorsque je spool le résultat d'un requête en AL32UTF8, cela prend 31 secondes. Lorsque je spool en WE8ISO8859P15, cela prend 2 secondes. Le character set de la base de données est UTF8.

Voici un exemple:

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
1. création de la table
CREATE TABLE source_data
 ( x, y, z
 , CONSTRAINT source_data_pk
      PRIMARY KEY (x,y,z)
 )
 AS
    SELECT ROWNUM           AS x
    ,      RPAD('x',50,'x') AS y
    ,      RPAD('y',50,'y') AS z
    FROM   dual
    CONNECT BY ROWNUM <= 100000;
 
2. query.sql
 
set pages 0
set heading off
set feed off
set pause off
set termout off
set linesize 32767
set longc 6000000
set long 6000000
set trimout on
set trimspool on
set timing on
spool test.log;
select * from source_data;
exit;

le test en lui même:
1. export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
sqlplus
@query.sql
31 secondes elapsed

2.export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
sqlplus
@query.sql
2 secondes elapsed....

La majorité du temps est passé en "SQL*Net message from client". Est ce que c'est à cause d'UTF8? Qu'est ce qui fait que l'on passe de 2 à 31 secondes pour la même requête?
Si vous avez une idée du pourquoi du comment je suis preneur.

Merci