Avatar billede maron Nybegynder
25. februar 2007 - 13:53 Der er 12 kommentarer og
1 løsning

Søgning i MySql

Håber nogen kan hjælpe og at dette spørgsmål er placeret korrekt.

Mit problem er at mine søgninger i MySql tager lang tid, op mod 5 sek. og det selvom jeg kun ønsker 10 resultater ud.
Gennemløbes hele databasen, når jeg har sat LIMIT 10 på og index på kolonnen brugernavn i MySql??

Set rs = Conn.Execute("SELECT * FROM data WHERE brugernavn = '"&replace(session("brugernavn"), "'", "''")&"' ORDER BY ID DESC LIMIT 10")
Avatar billede maron Nybegynder
25. februar 2007 - 14:55 #1
Bemærker netop at hvis jeg fjerner ORDER BY bliver søgningen lynhurtig.
Men ORDER BY skal jeg jo bruge for at få de korrekte visninger, kan jeg optimerer MySql på en eller anden måde?

Bruger MySql 4.0.17
Avatar billede mbagge Nybegynder
26. februar 2007 - 09:19 #2
Databasen vil løbe alle records igennem ved order by,,, ellers kan den jo ikke vide hvilken rækkefølge der skal laves.
Om du kan optimere noget afhænger meget af din databasestruktur og er derfor ikke lige til at svare på. Men måske kunne du nøjes med at hente færre kolonner ud istedet for select * ?
Avatar billede trophymanager Nybegynder
26. februar 2007 - 10:32 #3
du kan eventuelt prøve at smide et index på id
Avatar billede maron Nybegynder
26. februar 2007 - 11:50 #4
Jeg har index på mine kolonner.:)
Hvis et er muligt at sætte databasen til standart DESC - ville jeg kunne undvære af bruge ORDER BY og i stedet bare primære key og problemet vil være løst.

Er det muligt i MySql 4.0.17 eller kræves en anden version?
Avatar billede mbagge Nybegynder
26. februar 2007 - 12:12 #5
Mig bekendt kan du ikke sætte database op til dette. Databasen som sådan indeholder jo blot data i den rækkefølge som det er postet i. At sætte den til at sortere som deault, ville være lidt spøjst.

Men du kan måske opnå noget performance ved at bruge stored proceudre eller views. Begge dele er så vidt jeg husker først implementeret fra v. 5.0
Avatar billede maron Nybegynder
26. februar 2007 - 12:43 #6
Der er faktisk et sted i MySql hvor der er en drop down menu (ORDER BY) den står til DEFAULT, men hvis jeg prøver jeg ændre på den, får jeg en syntax fejl.

Men kan du fortælle lidt mere om stored procedure og wiews, hvordan virker det?
Avatar billede mbagge Nybegynder
26. februar 2007 - 13:39 #7
http://dev.mysql.com/doc/refman/5.0/en/ pkt 17 og 19 burde sætte dig lidt igang.

mysql har tidligere lavet nogle pdf filer der step by step fortæller om opbygningen af stored procedures m.m., meg kan godt nok ikke lige pt finde dem.
Men du kan jo søge lidt rundt på mysql.com efter dem
Avatar billede maron Nybegynder
26. februar 2007 - 14:22 #8
Det hjælper mig desværre ikke meget videre
Avatar billede trophymanager Nybegynder
26. februar 2007 - 14:34 #9
Maron kan du ikke prøve at beskrive din tabels struktur?

Derefter prøv at brug kommandoen "explain" foran dine udtryk. Det vil fortælle dig hvor mange rækker der bliver løbet igennem.

altså

explain select * from tabel where bla bla
Avatar billede maron Nybegynder
26. februar 2007 - 14:58 #10
På den måde i mit ASP script?
Set rs = Conn.Execute("explain SELECT * FROM data WHERE bruger = 'maron' ORDER BY ID DESC LIMIT 10")

Hvordan skriver jeg en response.write ud på det?
Avatar billede trophymanager Nybegynder
27. februar 2007 - 00:24 #11
godt spørgsmål egentlig.. har du ikke mulighed for at skrive queries directe til databasen og ikke gennem asp?
Avatar billede maron Nybegynder
27. februar 2007 - 01:08 #12
Nej hvordan skulle jeg gøre det?
Men noget må være helt galt, det tager mere end 5,5 sek at hente bare 10 resulater ud af min tabel med 1,6 mill poster.

Resultaterne/kolonner indeholder kun et brugernavn en dato, id og ip felt.
Avatar billede maron Nybegynder
27. februar 2007 - 22:35 #13
Utroligt at ingen ved noget om det her...
Any way, lukker spg.
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