Ik zit met het volgende probleem :
In een database is er een kolom "bestelnummer" waar van dat de inhoud steeds de volgende stramienen heeft :
1-45654-45
1-47546-87
1-57546-77
9-4454545
8-4565499
Ik krijg bv een parameter met de volgende waarde 15456544 om te zoeken in de SQL database.
Ik doe een "select * "-query uitvoeren en telkens het veld "bestelnummer" de "-"-tekens er uit halen en dan controleren als er een overeenkomst is.
Is er een mogelijkheid dat ik dat allemaal in een query kan steken zodat ik niet een volledige database zelf moet aflopen om een match te vinden?
SQL vraag
- guntherstassen
- Pro Member
- Berichten: 311
- Lid geworden op: 09 feb 2011, 20:16
- Locatie: Sint-Truiden
- Uitgedeelde bedankjes: 12 keer
- Bedankt: 27 keer
- Contacteer:
-
- Starter
- Berichten: 23
- Lid geworden op: 28 jul 2011, 09:45
- Uitgedeelde bedankjes: 1 keer
- Bedankt: 2 keer
Dan heb je in de DB nog een full table scan; dus als het performant moet zijn ben je er nog niet. (Al wel enorm veel performanter dan eerst de DB binnen te trekken natuurlijk).
Je zou dan beter ook een index hebben op de opgekuiste waarde...
Je zou dan beter ook een index hebben op de opgekuiste waarde...
Code: Selecteer alles
create unique index bestelnummer_idx on bestelling (replace(bestelnummer, '-'))
- guntherstassen
- Pro Member
- Berichten: 311
- Lid geworden op: 09 feb 2011, 20:16
- Locatie: Sint-Truiden
- Uitgedeelde bedankjes: 12 keer
- Bedankt: 27 keer
- Contacteer:
bedankt voor jullie reactie. de snelheid van de query is nu veel beter
-
- Pro Member
- Berichten: 352
- Lid geworden op: 30 mei 2012, 10:31
- Uitgedeelde bedankjes: 29 keer
- Bedankt: 29 keer
Als je de programmatie niet kan aanpassen is het handig om gewoon in een aparte kolom het bestelnr te bewaren zonder de -
Ik weet niet welke database vendor je hebt, maar als default verwijzing niet gaat kan je dat nog altijd via een trigger.
Ik weet niet welke database vendor je hebt, maar als default verwijzing niet gaat kan je dat nog altijd via een trigger.
-
- Elite Poster
- Berichten: 2798
- Lid geworden op: 17 apr 2019, 11:47
- Uitgedeelde bedankjes: 88 keer
- Bedankt: 112 keer
Op het eerste gezicht zit er niet echt een logica in de formatering (het is alvast niet 1-5-2).tizzen33 schreef:Kan je niet beter aan je zoekparameter de dashes toevoegen voor je de query uitvoert?
- Block
- Erelid
- Berichten: 1740
- Lid geworden op: 31 jul 2005, 01:08
- Uitgedeelde bedankjes: 130 keer
- Bedankt: 76 keer
Oplossing van 8balljunkie lijkt mij ook de beste. Zeker als een andere server gegevens uitleest van je database.
select replace * from userbase.be where topic ('got hostile', 'got friendly and polite');
-
- Elite Poster
- Berichten: 2759
- Lid geworden op: 18 dec 2004, 14:33
- Locatie: 053 Aalst
- Uitgedeelde bedankjes: 551 keer
- Bedankt: 194 keer
Als je zeker bent van de unieke IDs kan je misschien nog een beperking van 1 resultaat toevoegen?