|
Publicité | ||||||||||||||||||||||
|
|
#1 |
![]() ![]() |
Bonjour,
Je me pose toujours cette question, et voilà venu le moment opportun pour vous la poser : C'est quoi la différence entre un Index (créé via du SQL : CREATE INDEX ...) et un fihcier logique (créé à partir d'un DDS ) ? J'ai plusieurs programmes COBOL qui alimentent une base de données et j'ai des rapports qui utilisent SQL sur cette base de données. Ma démarche est la suivante :
J'ai toujours des ambiguités sur les LF/Index ! Merci pour vos lumières
__________________
*** Ingénieur COBOL/AS400 *** ------------------------------------------------------------------- Mes articles, Mon Blog Rubrique Jasper/iReport :------- Forum Jasper -------- ----- FAQ Jasper/iReport ----- |
|
00
|
|
|
#2 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 816 ![]() |
Un LF peut-être soit un index, soit une vue, soit les deux.
Je te déconseille vivement d'utiliser des LFs. Créé tes tables, tes index, tes vues avec SQL, requête que sur les PF (tables) et éventuellement si tu veux lire avec les ordres natifs COBOL au lieu de SQL, tu lis avec les index |
|
|
00
|
|
|
#3 | |||||
![]() ![]() |
Ta réponse fait tout un débat
Est- ce que cela veut dire que lors de la création du DDS (du LF) on a une option qui peut faire cette différence (entre index, vue ou les deux) ? si oui, comment faire ? Tu peux nous dire pourquoi ? Citation:
Code :
Code :
__________________
*** Ingénieur COBOL/AS400 *** ------------------------------------------------------------------- Mes articles, Mon Blog Rubrique Jasper/iReport :------- Forum Jasper -------- ----- FAQ Jasper/iReport ----- |
|||||
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Evite de passer par les DDS pour créer tes fichiers car ça devient de plus en plus obsolète et IBM ne fera d'ailleurs plus rien pour améliorer les choses dans ce domaine. A la place, utilise SQL autant que faire se peut pour créer tables, index, EVI, vues, alias, etc.
Tu pourras utiliser les tables et les index comme tu utilises un PF et un LF dans tes programmes HLL tels que COBOL, RPG, etc. En COBOL, place le nom de tes index sur la SELECT, comme tu l'as illustré. Ne serait-ce que parce que les page sizes des index sont 8 fois (64ko) plus grands que ceux des LF (8ko), moi aussi je recommanderais les index. Le compilateur s'en accomodera et tu feras transiter ainsi un volume de données beaucoup plus important dans les "buffers" si index. En outre, lors de l'utilisation de requêtes SQL directes ou dans les programmes, SQL utilisera plutôt un index qu'un LF si le choix se présente. Un LF, notamment si Select/Omit, sera traité par l'ancien moteur SQL moins performant (CQE) au lieu du relativement nouveau moteur SQE bien plus performant. Citation:
Ceci n'est qu'un bref aperçu de ce que SQL peut apporter. |
|
|
|
00
|
|
|
#5 | |||||
![]() ![]() |
Citation:
Alors je viens de tester le STRDBG, CALL QCMD ... Ma requête ressemble à : Code :
Code :
__________________
*** Ingénieur COBOL/AS400 *** ------------------------------------------------------------------- Mes articles, Mon Blog Rubrique Jasper/iReport :------- Forum Jasper -------- ----- FAQ Jasper/iReport ----- |
|||||
|
00
|
|
|
#6 | |||||
|
En attente de confirmation mail
Inscription : décembre 2008 Messages : 33 ![]() |
Citation:
C'est normal qu'il affiche ces messages car le programme débogué (STRSQL) tente d'accéder à des fichiers existants dans une bibliothèque de type PROD. Et donc pour éviter ces messages, il faut :
La seconde option est déconseillée car elle va permettre de déboguer en accédant et éventuellement mettre à jour un fichier de production. Bonne journée.
|
|||||
|
|
00
|
|
|
#7 | |
![]() ![]() |
Citation:
Je rigole et je comprends maintenant le UPDPROD ![]() Je viens de refaire des tests et en fouillant avec le F1 sur les différents messages il s'avère que mes requêtes passent par les INDEX, COOOOOOOOOL Mais toute autre explication est la bienvenue, car ce qui me reste ambigue c'est lorsque je changerai de jointure (éventuellement sur d'autres ID) alors que faut-il faire pour les Index ? créer d'autres Index sur ces nouveaux champs de jointure ? faut-il spécifier quelque chose dans le script de création de l'Index (car je pense qu'on ne peut avoir qu'un seul Index principal sur un fichier ou quelque chose comme ça !) Sinon pour les types d'Index (on parle parfois d'Index binaire ...) que choisir et comment ? Merci les amis
__________________
*** Ingénieur COBOL/AS400 *** ------------------------------------------------------------------- Mes articles, Mon Blog Rubrique Jasper/iReport :------- Forum Jasper -------- ----- FAQ Jasper/iReport ----- |
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
@ jaub,
Ce que te dit BelieveInNothing est tout à fait sensé. Si tes tables (fichiers) sont des données de TEST, change le type de la biblio qui les contient en *TEST en passant la commande Si ce sont des données de production, ne change pas le type de biblio mais lance les STRDBG avec UPDPROD(*YES). Comme BelieveInNothing, je ne recommanderais certainement pas cette dernière option et préconiserais la première pour les mêmes raisons que lui. Citation:
NB Les index que tu es appelé à créer sont des index de type binaire (Binary Radix). Tu seras appelé à créer peut-être des index de type EVI plus tard, mais c'est relativement des index secondaires. Je te recommande vivement la lecture (in us-english) de cette page sur le site de Big Blue et souviens-toi que Google est ton ami |
|
|
|
00
|
|
|
#9 | |||||
![]() ![]() |
Je lui ai dit que je ne le crois pas juste pour rigoler vu que son pseudo est BelieveInNothing (ne rien croire en français je suppose), donc à mon tour de ne pas le croire
Citation:
Exemple (vaut mieux qu'écrire 10000 mille lignes Requête 1: Code :
Supposons que j'ai une autre requête de type : Requête 2: Code :
Alors dans ce cas quels sont les index à créer ? J'éspère avoir bien expliqué ma demande
__________________
*** Ingénieur COBOL/AS400 *** ------------------------------------------------------------------- Mes articles, Mon Blog Rubrique Jasper/iReport :------- Forum Jasper -------- ----- FAQ Jasper/iReport ----- |
|||||
|
00
|
|
|
#10 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 816 ![]() |
En fait, chaque fois que le moteur a besoin d'un index et qu'il n'existe pas, il te crée un enregistrement dans la table QSYS2/SYSIXADV
Efface le contenu de ce fichier, et à partir de maintenant tu pourras voir dedans les index qu'il a besoin. Mais le mieux c'est iSeries Navigator pour ce faire, il a une option pour interroger SYSIXADV. Dans Base de données, clic droit sur le nom de ta base, puis assistant de gestion des Index. Il y a 4 options : - Elagage des index recommandés. Imagine, il te dit de créer un index et que tu le crées (possible directement avec iSeries Navigator aussi). Ainsi, les enregistrements dans SYSIXADV sont obsolètes, cette option permet de supprimer les entrées qui n'ont plus lieu d'être puisque l'index est créé - Regroupement des index (Condensed advised index) Imagine, il te dit dit de créer un index sur NUMCLI pour une requête particulière, puis sur (NUMCLI, DATCDE) pour une autre requête. Le regroupement va permettre de garder qu'une seule entrée en te disant qu'il faudrait créer un index sur NUMCLI, DATCDE (NUMCLI seul n'a plus d'intérêt dû au partage des chemins d'accès). - Mise à blanc : CLRPFM QSYS2/SYSIXADV ou DELETE * FROM QSYS2/SYSIXADV comme tu préfères. - Assistant --> Il te dit les index à créer (mieux vaut utiliser le regroupement) Perso, je commence par faire un élagage, puis un regroupement (qui appelle ensuite l'assistant), sinon à la mimine : SELECT * FROM QSYS2/SYSIXADV Dernière modification par K2R400 ; 02/02/2010 à 17h26. |
|
|
00
|
|
|
#11 | |
|
En attente de confirmation mail
Inscription : décembre 2008 Messages : 33 ![]() |
Citation:
Il me semble que la table QSYS2/SYSIXADV n'existe qu'à partir de la version V5R4. Pour plus de lecture, tu peux voir ici Merci. |
|
|
|
00
|
|
|
#12 | |
![]() ![]() |
Citation:
J'ai fait comme tu as dit : je suis allé sur iSeries Navigator, sur mon schéma je fait clique droit ==> Assistant de gestion des Index ==> Elagage des index recommandés, mais là rien ne se passe ! Est ce que cette option Elagage des index recommandés crée les index recquis ou quoi ? sachant que lorsque je fais Assistant de gestion des Index cela m'affiche beaucoup d'index à créer ! P.S : je n'ai pas l'option Regroupement des index que tu as cité. On est sur la V5R4.
__________________
*** Ingénieur COBOL/AS400 *** ------------------------------------------------------------------- Mes articles, Mon Blog Rubrique Jasper/iReport :------- Forum Jasper -------- ----- FAQ Jasper/iReport ----- |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 199 ![]() |
Bonjour,
Non l'élagage ne crée pas d'index. Concernant l'écran de suggestion des indexs, il faut vraiment prendre le temps de l'analyser et ne surtout pas créer tout ce qu'il te recommande (sinon je me retrouverai a devoir créé plusieurs milier d'index ..) Bref il faut recouper les suggestions avec les MTI et les requêtes sql. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com