« HP Pavilion DV7 functietoetsen of action keysCentOS: waar blijven de updates? »

3 comments

Comment from: Aad [Visitor]  
Aad

Kwam via via op je site en ik heb veel belangstelling voor Oracle.
Hierboven las ik:
SELECT * FROM tabel
WHERE UPPER(naam) LIKE UPPER(’Vero%’)
Hier maak je een beginnersfout, Oracle zal door deze upper() functies altijd een full table scan ipv index-scan doen, elk record door de upper functie halen (waarschijnlijk andere db-engines ook). Bij een enkele miljoenen records zal de performance dalen en in joins wordt het een probleem.
Ook dit UPPER(CONVERT(naam, ‘US7ASCII’)) like UPPER(CONVERT(’Véro%’,'US7ASCII’)) levert al snel een performance probleem. Moet je dus anders oplossen.

12/28/14 @ 12:06
Comment from: admin [Member]  

Voor mij is het Oracle verhaal helaas momenteel niet actueel. Ik werk nu aan andere projecten.

Ik heb dit indertijd gepost, omdat het me wel even tijd gekost had om tot deze oplossing te komen.

Ik snap wel hoe dit een performance probleem geeft, maar ik heb geen andere oplossing gevonden.

of het zou iets met binary search moeten worden.
Maar zoals gezegd: ik heb geen Oracle beschikbaar op het moment.

sta open voor suggesties.

01/26/15 @ 15:42
Comment from: Aad [Visitor]
Aad

De oplossing voor WHERE UPPER(naam) LIKE UPPER(’Vero%’) is een function based index: create index ix_u_naam on (uppper(naam).
De WHERE wordt dan where naam like LIKE UPPER(’Vero%’).

De oplossing voor het tweede is inderdaad binary search. Oracle heeft daar ook snelle en makkelijk te implementeren oplossingen voor.

01/29/15 @ 14:28