PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Septembre 2007 »
Lun Mar Mer Jeu Ven Sam Dim
  2
3 5 8
10 11 15 16
17 22 23
29 30

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

archives

Technique - optimisation | optimisation d'une requete avec extraction de minimum et maximum d'une date

Par jsubei le 05/09/2007 - 11:11

Bonjour Ă  tous,

j'ai une requete de la forme

SELECT id, min(the_date), max(the_date) from ma_table group by id;

que je cherche Ă  optimiser.

Naivement j'ai crée un index b-tree sur la colonne the_date mais cela est sans effet sur l'extraction du minimum et du maximum (normal, ce ne sont pas des constantes, c'est bien cela ?)

je sais également que dans ce cas je ne peut pas créer d'index sur la function ma_table(min(the_date)) puisque c'est une fonction aggrégative.

| SĂ©curiser votre base PostgreSQL

Par Guillaume Lelarge le 05/09/2007 - 17:04

Article écrit par Hubert Lubaczewski et traduit par Damien Clochard, le 18 août 2007. La version originale est disponible sur le blog de l'auteur où se trouvent beaucoup d'autres articles intéressants.

Il y a quelques temps j'ai décrit comment « pirater » un système en utilisant PostgreSQL. Aujourd'hui, je vais décrire comment sécuriser au maximum une installation PostgreSQL1.

| Index inversé, en C

Par Guillaume Lelarge le 05/09/2007 - 18:33

Depuis la version 8i, Oracle implémente les index inversés. Voici une proposition d’implémentation équivalente pour PostgreSQL. Les index inversés permettent d’accélérer les recherches sur les motifs tels que « colonne LIKE '%chaîne' ». Dans un tel cas, PostgreSQL effectue un parcours séquentiel (ou « sequential scan ») de la table interrogée. Toutefois, il est possible d’émuler un index inverse au moyen d’une fonction de renversement de chaîne couplée à un index sur fonction.

L'article précédent proposait l'implémentation d'un prototype en langage procédural PL/pgSQL, qui fait office ici de prototype. Cette implémentation a pour principal défaut d'être lente, pénalisant ainsi gravement les performances en écriture (INSERT et UPDATE). Ainsi, à chaque mise à jour, il est nécessaire de faire appel à la fonction reverse pour mettre à jour l'index fonctionnel ; cela s'observe notamment à la création de l'index. En revanche, il est possible de tirer partie des capacités de traitement des caractères multi-octets, que l'on rencontre notamment dans le cas d'une base de données encodée en UTF-8.

Ainsi, l'implémentation en langage C se doit d'être à la fois plus rapide et surtout se doit de supporter les jeux de caractères multi-octets. C'est à partir de ce minuscule cahier des charges que nous allons construire notre fonction reverse.

Technique - général | Fonctionnement des RULE(S)

Par farphadet le 05/09/2007 - 21:20

Bonjour,

Voila j'ai 3 tables et une vue. La vue est une résultante de ces 3 tables. Ce que je veux faire c'est pouvoir faire les opérations de base SELECT, INSERT, UPDATE, DELETE sur la vue et que ces opérations soit répercuter sur les différentes tables. Pour cela j'ai donc définit des REGLES pour l'INSERT, l'UPDATE et le DELETE. Tout fonctionnement bien pour l'INSERT et pour l'UPDATE, mais malheureusement la RULE pour le DELETE ne fonctionne pas comme je le voudrais. Je ne vais pas vous donnez la RULE qui me serait utile de connaitre, mais celle qui me fait me poser beaucoup de questions sur le fonctionnement des RULES.

Voici les 3 tables :

urls:
 
 Column | Type | Modifiers
--------+-------------------+---------------------------------------------------
 id | integer | not null default nextval('urls_id_seq'::regclass)
 note | integer |
 url | character varying |
 forbid | integer |
 utype | character varying |
 status | character varying |
Indexes:
    "urls_pkey" PRIMARY KEY, btree (id)

© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.