Re: Moet ik oppassen met wat ik index?

From: Ron Smeets <ron(dot)smeets(at)kensas(dot)nl>
To: pgsql-nl-algemeen(at)postgresql(dot)org
Subject: Re: Moet ik oppassen met wat ik index?
Date: 2010-06-03 07:10:30
Message-ID: 4C075566.4050704@kensas.nl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-nl-algemeen

Eerste wat bij mij opkomt is de vraag : is het nodig om tientallen
kolommen te hebben bij deze tabel, of kan er verder genormaliseerd worden?

Verder inzake indexen : probeer niet te veel indexen aan te maken op een
tabel. Elke extra index heeft impact op insert, update, delete
performance. Dit geldt voor ieder rdbms dus ook voor postgresql. Je kunt
samengestelde indexen aanmaken, maar let daarbij op de volgorde van
velden in de index. Als je bijvoorbeeld een index aanmaakt op naam,
naam_oorspronkelijk, auteur en de where-clause van de query bevat alleen
naam en auteur, dan wordt deze index niet gebruikt.
Dus het is zaak een overzicht te maken van alle belangrijke
where-clauses en daaruit af te leiden welke velden in aanmerking komen
voor indexering (al dan niet samengesteld).

Primaire sleutels zijn altijd een must, een index op een foreign key is
ook altijd een must.
Indexen worden net als alle andere database objecten gewoon op harddisk
opgeslagen (uiteraard).

Indien je werkt met een volledig vrije interface voor eindgebruikers kun
je overwegen om een extra kolom toe te voegen van het type ts_vector. In
deze kolom neem je dan alle relevante velden op. Deze kolom gebruik je
voor de zoekacties (dus moet er een index op). Zie :
http://www.postgresql.org/docs/8.4/static/textsearch.html. Hiermee kun
je op een eenvoudige wijze google-achtige zoekacties verwezenlijken.

succes

Ron Smeets
Kensas

Op 3-6-2010 1:02, Isaak schreef:
> Stel ik heb een tabel genaamd "boeken", die tientallen kolommen heeft,
> o.a.: id (primaire sleutel), naam, naam_oorspronkelijk (naam in de
> oorspronkelijk geschreven taal), auteur, datum_uitgebracht,
> beschrijving, aantal_paginas, gewicht. Uit deze tabel wil ik data
> ophalen op vlak van id, naam, naam_oorspronkelijk, auteur,
> datum_uitgebracht en geregeld nieuwe boeken invoegen en bestaande
> boeken updaten.
>
> Vragen die mij een beetje moeten bijleren over het gebruik van indexen:
>
> - Is het aangeraden om zoveel mogelijk indexen te creëren als deze
> velden in het WHERE deel van queries terechtkomen?
> - Wat voor impact heeft het op prestaties als ik veel indexen maak,
> bvb. meer dan 50% van de kolommen (om bvb. gebruikers efficiënt te
> laten zoeken in de databank)?
> - Bij MySQL vertragen indexen INSERT en DELETE, en UPDATE queries die
> waarden veranderen van velden met een index, queries omdat deze
> indexen elke keer moeten geüpdatet worden. Geldt hetzelfde ook voor
> PostgreSQL of werkt deze op een ander manier?
> - Worden indexen in het RAM opgeslagen of gewoon op de harde schijf?
> - Ligt de voorkeur bij CHAR i.p.v. VARCHAR datatypes voor indexen,
> omdat deze waarden een constante lengte hebben, d.m.v. padding (zoals
> bij MySQL)?
> - Zijn primaire sleutels aanbevolen voor tabellen met een hoge aantal
> INSERT queries per seconde ook wanneer deze zelden worden gebruikt
> (bvb. uitsluitend voor het verwijderen van rijen)?
>
> En tenslotte: kunnen jullie mij boeken over PostgreSQL voor websites
> aanraden? Bij voorkeur Nederlandstalige boeken, maar Engelstalige
> mogen ook indien deze uitgebreider zijn.
>
> Alvast bedankt voor het beantwoorden van enkele vragen.

In response to

Browse pgsql-nl-algemeen by date

  From Date Subject
Next Message vinny 2010-06-03 07:12:18 Re: Moet ik oppassen met wat ik index?
Previous Message Isaak 2010-06-02 23:02:35 Moet ik oppassen met wat ik index?