webForumDet fria alternativet

Sökning på bästa sätt med Access

Databaser & SQL

4 svar · 305 visningar · startad av web00132

Medlem sedan maj 2001797 inlägg
Frågan#1

Har en tabell i en Access-DB med ca 1500 poster och en sökfunktion i ASP på min webbplats som söker efter ord i två av tabellkolumnerna. Just nu ser sökningen ut typ så här:

SELECT * FROM tabell WHERE tblOne LIKE '%" & varSokord & "%' OR tblTwo LIKE '%" & varSokord & "%'

Det funkar väl ok just nu, är lite småsegt bara. Men om det blir fler poster i framtiden, vilket det kommer bli, så är jag orolig för att det kommer gå väldigt segt. Så:

Hur kan jag göra för att snabba upp sökningen? Asså, det går ju att välja i Access tabelldesign-gränssnitt att kolumnen ska indexeras, men hur använder jag indexeringen sen?

Medlem sedan dec. 200012 464 inlägg
#2

Med den frågan så spelar det ingen roll om du har index eller inte, den kommer alltid att vara långsam och svarstiden är direkt proportionell mot antalet poster.

Medlem sedan dec. 19996 721 inlägg
#3

....eftersom du inleder din LIKE med wildcard (%). Då kan inget index hjälpa.

Ta en titt på denna diskussion.

http://www.webforum.nu/showthread.php?t=132944

Medlem sedan maj 2001797 inlägg
#4

1. Så att köra med wildcard mot en Access-DB är, om man inte är nöjd med att det går sjukt segt, enligt er bara dumt? Eller går det att lösa på nåt sätt?

2. I det här fallet är det en webbshop det handlar om, man ska kunna söka på produkter. Vet inte hur jag ska formulera mig riktigt men är det vanligt att man inte kan söka på wildcards? Vad tycker ni, kan jag bygga sökfunktionen utan wildcards?

Alternativet vore som jag förstått det att helt enkelt byta DB till MySQL eller så. Men det blir ett jättejobb så det undviker jag gärna.

En sista fråga: I den tråden som du länkade till finns bl a den här länken, men där beskrivs indexering för SQL-Server, är det samma principer för SQL-Server som för MS Access?

Tack för era svar! :bire

Medlem sedan dec. 19996 721 inlägg
#5

web00132 skrev:

1. Så att köra med wildcard mot en Access-DB är, om man inte är nöjd med att det går sjukt segt, enligt er bara dumt? Eller går det att lösa på nåt sätt?

Det är inte dumt, men man ska vara medveten om vad som händer.

web00132 skrev:

2. I det här fallet är det en webbshop det handlar om, man ska kunna söka på produkter. Vet inte hur jag ska formulera mig riktigt men är det vanligt att man inte kan söka på wildcards?

Ja, det är rätt vanligt att man inte kan ha inledande wildcard.

web00132 skrev:

Vad tycker ni, kan jag bygga sökfunktionen utan wildcards?

Utan inledande wildcard, definitivt.

web00132 skrev:

Alternativet vore som jag förstått det att helt enkelt byta DB till MySQL eller så. Men det blir ett jättejobb så det undviker jag gärna.

MySQL är möjligen något snabbare än Access/JET, men själva grundproblemet består, oavsett vilken DBMS du väljer. Ett index hjälper inte om du har inledande wildcard.

web00132 skrev:

En sista fråga: I den tråden som du länkade till finns bl a den här länken, men där beskrivs indexering för SQL-Server, är det samma principer för SQL-Server som för MS Access?

Ja, i princip. SQL Server erbjuder dock lite större kontroll över hur indexen ska fungera.

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)