Avatar billede falslev Nybegynder
05. april 2005 - 15:56 Der er 25 kommentarer og
1 løsning

Hjælp til optimering af forspørgesel

Jeg har denne forspørgsel som sløver meget kan jeg se i min log.

Nogle ideer til forbedringer for både selve forspørgslen samt Index's

SELECT COUNT(ID) AS records FROM topics WHERE Sold=0 AND Active=1 AND Isearch=0 AND ItemBrand LIKE '%Ecco%' AND ItemColor LIKE '%beige%' AND ItemType LIKE '%støvle%';

Jeg kører MySQL 4.0.23a
Avatar billede arne_v Ekspert
05. april 2005 - 16:02 #1
index på sold, active og isearch er nok det mest oplagte
Avatar billede arne_v Ekspert
05. april 2005 - 16:02 #2
hvis du havde mulighed for at fjerne det første % i LIKE'erne (således at man
skulle angive søgeord fra start af, så kunne du sætte index på de
3 felter også.
Avatar billede bromer Nybegynder
05. april 2005 - 16:02 #3
Umiddelbart kan du lave index på sold og active, da de ikke vil fylde særlig meget, men helt sikkert kan forbedre hastigheden.

Hvilke typer er itemColor og ItemType. Umiddelbart burde du vel ikke bruge LIKE men =.
Avatar billede falslev Nybegynder
05. april 2005 - 16:27 #4
God ide arne v, men er bange for at vi bliver nød til at kunne søge på dele af ord bare.

itemColor og ItemType er begge varchar.

Index på Sold=0 AND Active=1 AND Isearch=0 er allerede sat på, men vi oplever stadig sørninger der tager over 7 sek.
Avatar billede bromer Nybegynder
05. april 2005 - 16:29 #5
hvor mange rækker har du i tabellen?
Avatar billede falslev Nybegynder
05. april 2005 - 16:30 #6
Pt. 165.552 men det er stigende.
Avatar billede arne_v Ekspert
05. april 2005 - 16:30 #7
LIKE '%noget%' er en performance killer
Avatar billede falslev Nybegynder
05. april 2005 - 16:32 #8
Ja uden tvivl. Men hvad gør man så.
Kan man lave noget fulltext eller er der funktioner i samme stil?
Avatar billede bromer Nybegynder
05. april 2005 - 16:34 #9
jeg tænker mere på at flytte itemtype ud i en anden tabel og istedet lave en reference til det i tabellen.
Avatar billede falslev Nybegynder
05. april 2005 - 16:35 #10
Er der virkelig ingen bedre løsning?
Hvordan fungere det??
Avatar billede arne_v Ekspert
05. april 2005 - 16:35 #11
fulltext er en mulighed, men om det passer til jeres scenarie er et
åbent spørgsmål
Avatar billede falslev Nybegynder
05. april 2005 - 16:36 #12
Arne v, det bruges til en avanceret-søgning hvor hvis brugeren skriver ecco i ItemBrand skal det kun være det felt der må matche.
Avatar billede arne_v Ekspert
05. april 2005 - 16:36 #13
Hvis antallet af distincte itemtype'r er markant mindre end antal rækker, så
kunne man godt vinde noget ved at lave den del af søgningen i en mindre
hjælpe tabel
Avatar billede arne_v Ekspert
05. april 2005 - 16:40 #14
Det er meget svært at gætte på hvad der giver den performance I ønsker.

Mit forslag er at du prøver de forskellige løsninger på et test system og ser
hvad der virkeligt hjælper.
Avatar billede falslev Nybegynder
05. april 2005 - 16:50 #15
Ja det var jo ikke lige de svar jeg havde håbet på :)

Hvad med at sætte et parameter mere op som default som f.eks. at man skulle vælge en kategori. Det må da hjælpe en del hvis man os tilføjer det til sit index.
Avatar billede bromer Nybegynder
05. april 2005 - 16:52 #16
Det forstod jeg ikke helt. Kan ItemType indeholde flere typer eller kun een?
Avatar billede falslev Nybegynder
05. april 2005 - 16:54 #17
ItemType er bare hvilke type varen er.
F.eks. bukser, bluse, sko, trøje, osv.
Avatar billede bromer Nybegynder
05. april 2005 - 16:55 #18
så felter kan godt indeholde "bukser,bluse", så det faktisk tilhører 2 type
Avatar billede bromer Nybegynder
05. april 2005 - 16:55 #19
det sidste type skulle have været i flertal
Avatar billede falslev Nybegynder
05. april 2005 - 16:57 #20
Nej sorry så misforstod jeg dig.

Det er et tekstfelt hvor man kan skrive lige hvad med vil.
Ligesom de andre Varchar felter.
Avatar billede bromer Nybegynder
05. april 2005 - 16:58 #21
okay, det tænkte jeg nok. Så er jeg tør for ideer.
Avatar billede arne_v Ekspert
05. april 2005 - 17:09 #22
Det bedste bud må være at lave et eksperiment med noget fulltext og se hvordan
det performer
Avatar billede arne_v Ekspert
05. april 2005 - 17:58 #23
Ellers så skal I igang med en større data rengøring, hvor data strømlines så
I kan nøjes med = fremfor LIKE
Avatar billede falslev Nybegynder
06. april 2005 - 14:05 #24
Nu har jeg lagt ind at man skal vælge et forumid os og det har hjulpet enormt.
Men det er sikkert bare for en tid :)

Tak for hjælpen begge. Laver i begge et svar så deler i point.
Avatar billede arne_v Ekspert
06. april 2005 - 19:45 #25
ok
Avatar billede falslev Nybegynder
11. april 2005 - 18:05 #26
Lukker nu
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester