En likesökning med inledande % går aldrig att få snabb.
Hur ser ditt data ut och under vilka villkor betraktas kolumnerna som lika?
4 svar · 283 visningar · startad av suecochilango
Jag behöver göra en join på två tabeller om ett textfält i tabell A är "like" ett textfält i tabell B, och tvärtom. Alltså:
select ... from a, b where
(a.fält like '%' || b.fält) OR (b.fält like '%' || a.fält)
Det är fult, det är tungt, det tar tid. Använder en materialiserad vy för att snabba upp min sökning, men då återstår givetvis problemet att det tar tid att refresha min vy.
Är det någon som vet ett mer effektivt sätt att göra det jag vill? Jag är ingen SQL-guru så jag kanske har komplicerat saker i onödan.
En likesökning med inledande % går aldrig att få snabb.
Hur ser ditt data ut och under vilka villkor betraktas kolumnerna som lika?
har du indexerat tabellen?
Jag behöver jämföra två uppsättningar av varor, om varunummren är lika på sättet jag beskrev så räknas varorna som lika (eller rättare sagt, föreslås som lika för användaren, men det är en annan historia). Varunummren som jämförs är VARCHAR2(64) fält.
Indexering borde så vitt jag vet inte hjälpa alls i detta fall, jag söker ju inte på ett sätt som kan använda index på ett vettigt sätt. Men visst, jag har indexerat tabellerna, det är ju relativt billigt.
Använd CHAR , jag testade precis VARCHAR och CHAR.
VARCHAR är långsammare än CHAR.