Pb vue et index

RPG (3 et 4, free), CL, SQL, etc...
Répondre
MRA
Messages : 15
Enregistré le : ven. 25 mars 2016, 13:56:58

Pb vue et index

Message par MRA »

Bonjour,

J'ai actuellement une vue sur mon fichier ARTICLE qui contient

- société
- article
- fournisseur
- ref fournisseur
- REGEXP_REPLACE(ref fournisseur...) as shortref

Les critères de ma requête sql portent uniquement sur la société et la shortref.
L'exécution de la requête prend énormément de temps (40s).
Je n'arrive pas à trouver le bon index à mettre en place.
La shortref n'étant pas une zone du fichier article, je ne peux pas créer d'index dessus.
Nous avons cependant un logique sur société, ref fournisseur, mais l'optimiseur sql ne fait pas le lien entre shortref et ref fournisseur.

Pour info, lorsque je connais le fournisseur, l’optimiseur sql détecte un logique, puis créé la vue sur ce logique, la requête prend 1/2 seconde.

Merci pour votre aide.

cmasse
Site Admin
Messages : 802
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

REGEXP

Message par cmasse »

Les expressions régulières peuvent être assez couteuses....

Mais, si , bien sur, vous pouvez faire un index ayant comme clé REGEXP_REPLACE(ref fournisseur...) as shortref

Code : Tout sélectionner

CREATE INDEX i1 on table T1 (REGEXP_REPLACE(ref fournisseur...) as shortref  )
Christian Massé (Volubis.fr)

MRA
Messages : 15
Enregistré le : ven. 25 mars 2016, 13:56:58

Message par MRA »

Bonjour,

J'ai essayé de créer l'index comme indiqué, mais sans résultat..

CREATE INDEX IARTICL01 ON ARTICL (ARTSOC, REGEXP_REPLACE(REGEXP_REPLACE(ARTREF, '\W', ''), '^0*', '') as SHORTREF ) ;

SQL State: 429BX
Vendor Code: -356
Message: [SQL0356] Expression d'index 0 non valide. Cause . . . . . : Expression d'index 0 non valide. Si le numéro d'expression est 0, soit l'expression est référencée dans la clause WHERE ou la clause INCLUDE, soit le numéro de colonne de la clé d'index est inconnu. L'expression est incorrecte pour l'une des raisons suivantes : -- L'expression fait référence à un registre spécial ou à une variable globale. -- L'expression contient une sous-requête. -- L'expression contient ROW CHANGE TIMESTAMP ou ROW CHANGE TOKEN. -- L'expression utilise une fonction d'agrégation (telle que AVG ou COUNT), une fonction qui n'est pas déterministe, une fonction définie par l'utilisateur ou une fonction système non autorisée. -- L'expression utilise la fonction scalaire NODENAME, DBPARTITIONNAME, DATAPARTITIONNAME ou DATAPARTITIONNUM. -- L'expression implique des objets LOB ou XML. Que faire . . . : Corrigez l'erreur, puis renouvelez la demande.

cmasse
Site Admin
Messages : 802
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

REGEXP

Message par cmasse »

Oups, il y a effectivement qq fonctions qui ne peuvent être utilisées comme clé d'index
It must not contain any of the following:

Subqueries
Aggregate functions
Variables
Global variables
Parameter markers
Special registers
Sequence references
OLAP specifications
ROW CHANGE expressions
REGEXP_LIKE predicate
User-defined functions other than functions that were implicitly generated with the creation of a distinct type
Any function that is not deterministic
The following built-in scalar functions:
ATAN2 DLURLPATH MONTHNAME SCORE
CARDINALITY DLURLPATHONLY MONTHS_BETWEEN SOUNDEX
CONTAINS DLURLSCHEME NEXT_DAY TABLE_NAME
CURDATE DLURLSERVER OVERLAY TABLE_SCHEMA
CURTIME DLVALUE NOW TIMESTAMP_FORMAT
DATAPARTITIONNAME ENCRYPT_AES RAISE_ERROR TIMESTAMPDIFF
DATAPARTITIONNUM ENCRYPT_RC2 RAND TRUNC_TIMESTAMP
DAYNAME ENCRYPT_TDES REGEXP_COUNT VARCHAR_FORMAT
DBPARTITIONNAME GENERATE_UNIQUE REGEXP_INSTR VERIFY_GROUP_FOR_USER
DECRYPT_BINARY GETHINT REGEXP_REPLACE WEEK_ISO
DECRYPT_BIT IDENTITY_VAL_LOCAL REGEXP_SUBSTR WRAP
DECRYPT_CHAR INSERT REPEAT XMLPARSE
DECRYPT_DB LPAD REPLACE XMLVALIDATE
DIFFERENCE LOCATE_IN_STRING ROUND_TIMESTAMP XSLTRANSFORM
DLURLCOMPLETE 1 MAX_CARDINALITY RPAD
mea culpa, mea maxima culpa....
Modifié en dernier par cmasse le mar. 02 août 2016, 16:27:57, modifié 1 fois.
Christian Massé (Volubis.fr)

MRA
Messages : 15
Enregistré le : ven. 25 mars 2016, 13:56:58

Message par MRA »

Aucun souci M. Massé !
Nous avons finalement alimenté une table avec les références compressées dont nous avions besoin.

Encore merci pour votre aide :-)

Répondre