Ik ben zelf een tijdje geleden overgestapt van MySQL op PostgreSQL voor een aantal van mijn applicaties om het één en het ander te testen.
Ik ben zéér te spreken over de mate van flexibiliteit in pgsql zelf; met name het definiëren van types en het kunnen integreren van willekeurige talen is geweldig. Ook het feit dat ik nu een applicatie kan schrijven die volledig met transacties werkt zonder er eerst InnoDB voor in te schakelen en te gebruiken met alle nadelen van dien, heeft ervoor gezorgd dat ik pgsql hoog in het vaandel heb staan.
Echter is er natuurlijk ook een keerzijde. Tsearch2, de (nog redelijk in ontwikkeling zijnde) full text search engine voor pgsql, biedt leuke opties maar in de praktijk is het werkelijk onwerkbaar. Indexeren duurt dagen (letterlijk!) waar de FT-search van MySQL indexeerde in ruim één of twee uur. Vervolgens is de rank()-functie zo traag dat het zoeken weliswaar snel is, maar het sorteren op relevantie een volledige minuut kan duren op sommige queries.
Ook de query planner is nog niet helemaal optimaal. Het lijkt alsof MySQL in de gaten heeft wélke join het snelst het aantal resultaten kort door de index al raad te plegen terwijl PostgreSQL puur plant op basis van wat algemene(re) statistieken. Een query met 8 joins (met dus heel veel mogelijke volgordes qua joinen) werd door MySQL moeiteloos geoptimaliseerd terwijl PostgreSQL al andere resultaten gaf als ik de initiële volgorde van de joins in de query aanpaste. Erg jammer dus.
Al met al biedt PostgreSQL dus voor mij veel voordelen maar ook de nodige nadelen - hopelijk zullen ze die in de toekomst nog weg weten te werken.
