/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Optimere af SQL 2000
Fra : N9


Dato : 25-10-05 11:27

Hej

Jeg har koblet ASP op til en SQL 2000, med en masser vare over 90000 varenr.
Mit problem er at hvis jeg søger i f.eks. med wild søgning såsom '%CU%', så
gå det hele i stå. Resultat er måske 20000 poster er der en måde til at
optimere sin søgning ?? eller skal jeg helt undgå '%%' søgning??
Jeg har en tabel med knap 300000 poster, der går det helt galt.
Min tanke er at optimere sql med indexsering eller andet i SQL niveau. Håber
at en af jer har nogle gode råd eller andet kommentar, al modtages, takker


N9



 
 
Jens Gyldenkærne Cla~ (25-10-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-10-05 13:05

N9 skrev:

> Jeg har koblet ASP op til en SQL 2000, med en masser vare over
> 90000 varenr. Mit problem er at hvis jeg søger i f.eks. med
> wild søgning såsom '%CU%', så gå det hele i stå.

Søgninger med '%...' kan ikke benytte indekseringen i tabellen -
databasen er nødt til at løbe gennem samtlige poster.

I en stor tabel kan det betyde meget langsomme søgninger.


> Resultat er måske 20000 poster er der en måde til at optimere
> sin søgning ?? eller skal jeg helt undgå '%%' søgning??

Du skal i hvert fald nøjes med at bruge '%..%'-søgninger til de
tilfælde hvor det er eneste mulighed.

En mulig forbedring er at bruge MSSQL's mulighed for
fuldtekstindeksering. Det er dog ikke noget jeg har prøvet i
praksis.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Michael Zedeler (25-10-2005)
Kommentar
Fra : Michael Zedeler


Dato : 25-10-05 15:10

N9 wrote:
> Jeg har koblet ASP op til en SQL 2000, med en masser vare over 90000 varenr.
> Mit problem er at hvis jeg søger i f.eks. med wild søgning såsom '%CU%', så
> gå det hele i stå. Resultat er måske 20000 poster er der en måde til at
> optimere sin søgning ??

Hvis du får 20.000 poster, er søgningen jo gået galt alligevel. Der er
vel ingen, der gider at bladre dem allesammen igennem. Du er nødt til at
sikre at brugeren får nogle bedre resultater. Det kan du f. eks. gøre
ved at forhindre brugeren i at fyre søgninger som f. eks. "%s%" af.

> eller skal jeg helt undgå '%%' søgning??
> Jeg har en tabel med knap 300000 poster, der går det helt galt.
> Min tanke er at optimere sql med indexsering eller andet i SQL niveau. Håber
> at en af jer har nogle gode råd eller andet kommentar, al modtages, takker

Du kan indeksere din tabel manuelt, men tror egentlig at det er mere
praktisk at bruge fuldtekstsøgefunktionen, som Jens henviser til. For
eksemplets skyld gennemgår jeg alligevel lige proceduren her:

1. Løb alle dine produkter igennem. For hver række gør dette her:
2. Hiv alle ord ud og put dem i en tabel, så der kun er een forekomst af
hvert ord. Hvert ord skal have et unikt id.
3. Opret en mange til mange-relation imellem forekomsterne af ord og
produkterne (som del af trin 2 ovenfor).

Så har du Produkter <<--->> Ord.

Da der kun kan være én forekomst af hvert ord i indeks-tabellen, bliver
den sandsynligvis ikke så stor. Søgning er så et join imellem Ord- og
Produkter-tabellen.

Eksempel:

Produkter
ID | Beskrivelse
---+--------------
2| Sort egernbudding.
3| Sort computerkabinet.

ProdukterOrd
Produkt | Ord
--------+------
2| 4
2| 5
3| 4
3| 6
Ord
ID | Ord
---+--------
4| sort
5| egernbudding
6| computerkabinet

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

N9 (25-10-2005)
Kommentar
Fra : N9


Dato : 25-10-05 19:25

Hej

Tak for svarende og til dig Jens.
Jeg kigger på hvordan jeg kan bruge fulltext_search.

Hilsener

N9



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste