Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur 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 28/04/2008, 18h19   #1
Membre régulier
 
Inscription : juin 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 328
Points : 78
Points : 78
Par défaut Quand créer des index ?

Bonsoir,
quand est ce est jugé necessaire de créer des index ?
parce que là , j'ai une table susceptible de contenir des millions de lignes .
déjà j'ai lu quelques part que oracle crée automatiquement un index sur le key de la table , dans ce cas dois je en créer un autre sur une clé étrangère de la table ?
zaineb.z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2008, 23h00   #2
Membre à l'essai
 
Inscription : mars 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 34
Points : 21
Points : 21
pour les colonne utilisés dans des jointures, clauses where...
il faut aussi se poser la question de quel type d'index mettre??
messalux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 08h37   #3
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
surtout eviter d'indexer des colonnes pouvant contenir des doublons
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 08h41   #4
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
Citation:
Envoyé par zaineb.z Voir le message
Bonsoir,
dans ce cas dois je en créer un autre sur une clé étrangère de la table ?
En général il est recommandé de créer des index sur les clés étrangères au moins pour des raisons de concurrence d'accès.

Citation:
Envoyé par frp31 Voir le message
surtout eviter d'indexer des colonnes pouvant contenir des doublons
Pourquoi une règle aussi générale ?
__________________
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 29/04/2008, 10h20   #5
Membre régulier
 
Inscription : juin 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 328
Points : 78
Points : 78
type d'index je croyais qu'il y a qu'un seul type d'index
zaineb.z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 10h30   #6
Membre chevronné
 
Avatar de 13thFloor
 
Homme
DBA Oracle freelance
Inscription : janvier 2005
Messages : 558
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France

Informations professionnelles :
Activité : DBA Oracle freelance

Informations forums :
Inscription : janvier 2005
Messages : 558
Points : 718
Points : 718
Citation:
Envoyé par zaineb.z Voir le message
type d'index je croyais qu'il y a un seul type d'index
btree (par défaut), bitmap, reverse, descending, fbi... tu as le choix.

En réponse à ta question initiale, je dirai :
- quand le coût de recherche d'informations est meilleur (moins de blocs à parcourir que pour lire totalement une table)
- pour garantir l'intégrité des données (index unique ou primaire)
13thFloor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 10h40   #7
Membre régulier
 
Inscription : juin 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 328
Points : 78
Points : 78
Donc , pour remédier à mon problème ( recherche plus rapide ... ) je dois créer un index sur les clés étrangères ou non? vous me conseillez quel type d'index ?
et merci tous de m'avoir repondue
zaineb.z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 10h45   #8
Invité régulier
 
Inscription : juin 2006
Messages : 31
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 31
Points : 6
Points : 6
je te conseille de lire ce cours il parle des diiférents types d'index:

http://duongkhang.free.fr/Wika/wikka...OptimisationBD
maguie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 11h27   #9
Membre régulier
 
Inscription : juin 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 328
Points : 78
Points : 78
Merci
j'hesite entre le type bitmap et b-tree , lequel entre les deux dois je opter pour ?
zaineb.z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 14h49   #10
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
bitmap n'est à utiliser que dans des cas exceptionnelles : très forte volumétrie, valeurs de colonne fixe (sexe, oui/non, etc...) et peu de mise à jour de l'index.

Voici des articles intéressant sur l'optimisation :
OPTIMISATION des SGBDR et du SQL
Intéret des indexes par l'exemple et Optimiser SQL Server (sous SQL Server mais c'est la méthode qui est importante)
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 17h17   #11
Membre régulier
 
Inscription : juin 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 328
Points : 78
Points : 78
Merci j'ai lu le cours, c'est très intéressant sauf que... je n'arrive pas à me décider.
j'ai même fait une recherche dans le forum , c'est très ambigu ce que j'ai trouvé
ce que j'ai compris c'est que si j'ajoute un index à ma table , je dois le faire sur les clés étrangères et cela,d'après ce que j'ai lu, n'est pas toujours très "optimisant" lors des recherches ( select , insert en lot )
je ne sais plus quoi faire....
zaineb.z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 10h21   #12
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Bah il y a un moment où la prévision de l'avenir a ses limites... donc sauf si est doué de don de voyance, je ne peux que t'encourager à tester les indexes que tu penses être intéressant. Enfin, sur une FK c'est rarement inutile
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 10h39   #13
Membre régulier
 
Inscription : juin 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 328
Points : 78
Points : 78
D4acc , donc un b tree sur les pk , à chaque pk un index c'est bien cela ?
zaineb.z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 13h46   #14
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
oui, JAMAIS de bitmap sur une PK. Et PK = contrainte unique + index
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 14h10   #15
Membre régulier
 
Inscription : juin 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 328
Points : 78
Points : 78
dans ma table , il y a un seul pk , j'ai lu quelques part que oracle crée un index automatiquement avec le pk ,
donc , si je veux réduire le temps d'exécution des requêtes , dois je créer un index sur les champs les plus sollicités dans mes requêtes ?
zaineb.z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 14h36   #16
Membre chevronné
 
Avatar de 13thFloor
 
Homme
DBA Oracle freelance
Inscription : janvier 2005
Messages : 558
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France

Informations professionnelles :
Activité : DBA Oracle freelance

Informations forums :
Inscription : janvier 2005
Messages : 558
Points : 718
Points : 718
Citation:
Envoyé par zaineb.z Voir le message
dans ma table , il y a un seul pk , j'ai lu quelques part que oracle crée un index automatiquement avec le pk ,
donc , si je veux réduire le temps d'exécution des requêtes , dois je créer un index sur les champs les plus sollicités dans mes requêtes ?
Oui et non.
Oui si le parcours par index est moins couteux que lire toute la table.
Oui si la proportion de données à ramener est faible (moins de 15%).
Dans le doute, un histogramme sur les colonnes indexées aidera l'optimiseur à choisir entre un parcours par index ou un parcours de la table.
Oui si le nombre de blocs occupés par la table est significatif.

Attention : trop d'index nuit aux perfs lors des mises à jours.
Attention (bis) aux paramètres optimizer_index_cost_adj et db_file_multiblock_read_count qui ont un impact sur la prise en compte des index.
13thFloor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 15h33   #17
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par 13thFloor Voir le message
Attention (bis) aux paramètres optimizer_index_cost_adj et db_file_multiblock_read_count qui ont un impact sur la prise en compte des index.
NON ! Je voudrais qu'on arrête de parler de ces paramètres qui sont extrêmement délicat à utiliser et en général, quand on en est à toucher à ça, c'est qu'il y a un autre problème.

Il vaut mieux avant toute chose se concentrer sur les stats.

Pour répondre à zaineb.z, en général on indexe les colonnes filtrantes (dans le WHERE) en tenant compte de la sélectivité des données. Les liens que j'ai donné expliquent tout ça.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 15h57   #18
Membre chevronné
 
Avatar de 13thFloor
 
Homme
DBA Oracle freelance
Inscription : janvier 2005
Messages : 558
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France

Informations professionnelles :
Activité : DBA Oracle freelance

Informations forums :
Inscription : janvier 2005
Messages : 558
Points : 718
Points : 718
Citation:
Envoyé par orafrance
NON ! Je voudrais qu'on arrête de parler de ces paramètres qui sont extrêmement délicat à utiliser et en général, quand on en est à toucher à ça, c'est qu'il y a un autre problème.
C'est juste une mise en garde concernant les possibilités de favoriser ou non l'utilisation des index, pas une préconisation.
Juste pour lui indiquer que les stats ne sont pas les seules éléments qui déterminent si un index est utilisé ou non.
13thFloor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2008, 15h58   #19
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Sauf qu'il n'y a pas à y faire attention... en plus, on a à faire visiblement à un débutant et c'est dommage de l'embrouiller avec des paramètres qu'on ne doit pas toucher.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 18h32   #20
Membre régulier
 
Inscription : juin 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 328
Points : 78
Points : 78
merci de m'avoir repondu ,
orafrance , tu as raison , quand j'ai lu
Citation:
optimizer_index_cost_adj et db_file_multiblock_read_count
j'ai
merci à tous encore et bonne soirée
zaineb.z 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 20h03.


 
 
 
 
Partenaires

Hébergement Web