PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 23/04/2014 13:51:17

Crackerz
Membre

Les index et l'optimisation

Bonjour,
Après une bonne lecture de la documentation j'ai quelques questions à propos de l'optimisation via notamment les index.

1)Lorsque je créer une clé primaire ou secondaire un index unique de type B-tree est créer automatiquement. Les clé étrangère doit-elle
porter un index explicitement pour accélérer les jointures ?

2)Je voudrai faire des recherches sur des prénoms,nom dans ma base de donnée dois-je y déposer un index, si oui de quel type me conseillez-vous ?

3)La recherche plein texte est utile uniquement dans le cas ou l'utilisateur fait de la recherche avec des mots clés ?

4)Un système utilisant l'auto-complétion doit-il être porteur d'un index particulier sur les colonnes parcourut ?

5)Un dernier conseil pour la route ?

Merci.

Hors ligne

#2 23/04/2014 21:44:41

gleu
Administrateur

Re : Les index et l'optimisation

1)Lorsque je créer une clé primaire ou secondaire un index unique de type B-tree est créer automatiquement. Les clé étrangère doit-elle
porter un index explicitement pour accélérer les jointures ?

Ça peut être utile. Tout dépend du cas.

C'est quoi un index secondaire ?

2)Je voudrai faire des recherches sur des prénoms,nom dans ma base de donnée dois-je y déposer un index, si oui de quel type me conseillez-vous ?

Encore une fois, ça dépend. Si vous avez vingt lignes de nom/prénom, ça ne servira à rien. Si vous en avez 20 millions, ça devient intéressant... et encore, ça dépend des requêtes.

Quant au type, vous n'avez pas le choix : Btree.

3)La recherche plein texte est utile uniquement dans le cas ou l'utilisateur fait de la recherche avec des mots clés ?

Non, au contraire. Elle est utile quand on cherche des mots et plus exactement leur racine.

4)Un système utilisant l'auto-complétion doit-il être porteur d'un index particulier sur les colonnes parcourut ?

Vous mélangez interface et base de données. Impossible de répondre correctement à une telle question.

5)Un dernier conseil pour la route ?

Lire http://use-the-index-luke.com/fr (ou sa VO http://use-the-index-luke.com).


Guillaume.

Hors ligne

#3 24/04/2014 02:19:56

Crackerz
Membre

Re : Les index et l'optimisation

Merci gleu pour votre réponse.

Ça peut être utile. Tout dépend du cas.
C'est quoi un index secondaire ?

Pourriez-vous me dire dans quel contexte vous jugez cela nécessaire ? (Je n'ai pas parler d'index secondaire).

Encore une fois, ça dépend. Si vous avez vingt lignes de nom/prénom, ça ne servira à rien. Si vous en avez 20 millions, ça devient intéressant... et encore, ça dépend des requêtes.
Quant au type, vous n'avez pas le choix : Btree.

Ok je ne pensai pas qu'un index n'étais pas bénéfique qu'à partir de même plus d'un million d'entrée.

Merci pour les autres réponses, je vais suivre votre lien.

Hors ligne

#4 24/04/2014 22:13:06

gleu
Administrateur

Re : Les index et l'optimisation

Pourriez-vous me dire dans quel contexte vous jugez cela nécessaire ?

Quand il y a des jointures qui vont récupérer un bon nombre de lignes sur la table de référence par exemple.

Je n'ai pas parler d'index secondaire

En effet, vous avez parlé de clé secondaire. Et du coup, c'est quoi ? smile

Ok je ne pensai pas qu'un index n'étais pas bénéfique qu'à partir de même plus d'un million d'entrée.

Le 20 millions était plutôt une façon de dire "un grand nombre de lignes". Dans certains cas, un index sera intéressant même pour un petit nombre de lignes. Mais l'idée est surtout de lire peu de lignes parmi un gros tas de lignes. Et il peut aussi servir pour récupérer les données triées.


Guillaume.

Hors ligne

#5 25/04/2014 01:13:55

Crackerz
Membre

Re : Les index et l'optimisation

Merci c'est noté smile

J’appelle clé secondaire ou clé candidate non primaire un identifiant qui aurait pu être primaire mais ne l'ai pas "immédiatement". Un exemple :
CREATE TABLE T1(
    idT1   not null primary key,
    ....
    email  not null UNIQUE
);
Suis-je entrain de confondre différentes notions ?

Hors ligne

#6 25/04/2014 10:00:11

gleu
Administrateur

Re : Les index et l'optimisation

Si j'ai bien compris, email serait la clé secondaire ? en tout cas, de ce que je comprends de votre explication, vos clés secondaires n'ont aucune existence du côté du SGBD. C'est juste une clé unique, qui est proche d'une clé primaire mais pas identique.


Guillaume.

Hors ligne

#7 25/04/2014 14:19:43

Crackerz
Membre

Re : Les index et l'optimisation

en tout cas, de ce que je comprends de votre explication, vos clés secondaires n'ont aucune existence du côté du SGBD. C'est juste une clé unique, qui est proche d'une clé primaire mais pas identique.

Oui c'est bien ça ! Dans un ouvrage que j'ai lu il déclarer les clés secondaire à l'aide du mot clé "UNIQUE" mais je ne sais pas si cette même notion est repris dans PostgreSql. Certains SGBDR y dépose un index non nécessairement unique ce qui reviens à ce que vous avez compris.

Hors ligne

#8 25/04/2014 16:18:26

gleu
Administrateur

Re : Les index et l'optimisation

Au niveau de PostgreSQL, une contrainte unique est forcée par un index. La différence avec une clé primaire est qu'une colonne ayant un index unique peut avoir des valeurs NULL, contrairement à une clé primaire.


Guillaume.

Hors ligne

#9 25/04/2014 16:22:09

SQLpro
Membre

Re : Les index et l'optimisation

Crackerz a écrit :

en tout cas, de ce que je comprends de votre explication, vos clés secondaires n'ont aucune existence du côté du SGBD. C'est juste une clé unique, qui est proche d'une clé primaire mais pas identique.

Oui c'est bien ça ! Dans un ouvrage que j'ai lu il déclarer les clés secondaire à l'aide du mot clé "UNIQUE" mais je ne sais pas si cette même notion est repris dans PostgreSql. Certains SGBDR y dépose un index non nécessairement unique ce qui reviens à ce que vous avez compris.

La notion de clef secondaire n'existe pas; On parle de :
clef primaire (NOT NULL et UNIQUE)
clef alternative ou subrogée (UNIQUE et NULLable)

A +


Frédéric Brouard, alias SQLpro,  ARCHITECTE DE DONNÉES,  Expert langage SQL
Le site sur les SGBD relationnel et langage SQL   : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA, ISEN Toulon,  CESI Aix en Provence  * * * * *

Hors ligne

#10 25/04/2014 18:34:04

Crackerz
Membre

Re : Les index et l'optimisation

La définition de clef alternative que vous donnez ci-dessus est celle que je donne à clé secondaire.

"Le terme de secondaire n'est pas standard. La littérature utilisera le terme de clés candidates pour désigner tous les identifiants d'une table. Un identifiant secondaire est donc une clé candidate non primaire."

Hors ligne

Pied de page des forums