IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Recherche de l'ordre de tri des indexs


Sujet :

PostgreSQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Recherche de l'ordre de tri des indexs
    Bonjour

    Je suis sur le développement d'un logiciel fonctionnant avec PostGre 8.2 fonctionnant sur Windows XP, Ce logiciel doit pouvoir comparer une base de données PostGreSQL avec une base Oracle ou MS SQL (Comparaison des clés primaires, des indexes, des données). Sur PostGre, je n'arrive pas à déterminer l'ordre de tri des indexes (si ils sont ascendants ou descendants).

    Connaissez vous la requête qui pourrait me l'indiquer? Merci.

    (Edit, je voudrais aussi déterminé s'ils sont partitionnés)

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par Setep'
    Bonjour

    Je suis sur le développement d'un logiciel fonctionnant avec PostGre 8.2 fonctionnant sur Windows XP, Ce logiciel doit pouvoir comparer une base de données PostGreSQL avec une base Oracle ou MS SQL (Comparaison des clés primaires, des indexes, des données). Sur PostGre, je n'arrive pas à déterminer l'ordre de tri des indexes (si ils sont ascendants ou descendants).

    Connaissez vous la requête qui pourrait me l'indiquer? Merci.

    (Edit, je voudrais aussi déterminé s'ils sont partitionnés)
    voir la table système
    pg_catalog.pg_am

    http://www.postgresql.org/docs/7.4/s...log-pg-am.html

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    L'ennui c'est que pour obtenir l'identifiant pour pg_am, faut utiliser un id dans pg_proc qui s'obtient avec un autre oid. Mais dans pg_index, le seul identifiant pour pg_proc se trouve dans un oidvector, et je ne sais comment obtenir les oid dans le vector. (si j'ai bien compris, je suis nouveau sur PostGreSQL)
    Par contre pour le partitionnement, je n'ai toujours pas trouvé.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par Setep'
    L'ennui c'est que pour obtenir l'identifiant pour pg_am, faut utiliser un id dans pg_proc qui s'obtient avec un autre oid. Mais dans pg_index, le seul identifiant pour pg_proc se trouve dans un oidvector, et je ne sais comment obtenir les oid dans le vector. (si j'ai bien compris, je suis nouveau sur PostGreSQL)
    Par contre pour le partitionnement, je n'ai toujours pas trouvé.
    un oidvector est une suite d'entiers séparés par un espace…
    c'est assez simple à scanner dans n'importe quel langage…

    en php explode()
    en ruby split()
    en Objective-C componentsSeparatedByString:
    en C sscanf dans une boucle…
    etc.

    Le partitionnement étant défini au niveau des tables via le mécanisme d'inhéritance : c'est à ce niveau-là que vous regarderez…

    Il n'y a pas de partitionnement des index à proprement dit, les index peuvent être utiles pour optimiser l'accès en optimisant les requêtes sur les contraintes qui "partitionnent" la table…

    Le partitionnement en PostgreSQL se fait de manière non explicite mais en combinant différentes fonctionnalités, il ne sera pas simple de déterminer à coup sûr que l'on est face à un partitionnement décidé par le concepteur en examinant les tables systèmes…

    détecter que plusieurs tables descendent de la même table est simple,
    détecter qu'un même champ hérité fait l'objet de contraintes différentes dans chaque table fille l'est déjà un peu moins,
    détecter que ces contraintes n'ont pas d'intersection logique et couvrent tout l'espace des valeurs possibles est encore un peu plus compliqué…

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    D'accord merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Etat - Personnalisation de l'ordre de tri des groupes
    Par sbeprod dans le forum IHM
    Réponses: 2
    Dernier message: 23/03/2011, 07h47
  2. [1.x] Comment définir l'ordre de tri des choix d'une combo ?
    Par lr dans le forum Symfony
    Réponses: 2
    Dernier message: 21/01/2010, 12h40
  3. Tri des valeurs d'un tableau en ordre croissant
    Par Mickael2604 dans le forum Ada
    Réponses: 1
    Dernier message: 17/11/2007, 19h05
  4. [ASE]Recherche des index redondants
    Par danmicka dans le forum Sybase
    Réponses: 3
    Dernier message: 18/08/2006, 15h31
  5. Réponses: 5
    Dernier message: 10/08/2006, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo