Avatar billede kaptajnknas Nybegynder
27. maj 2006 - 21:29 Der er 30 kommentarer og
1 løsning

Index på MySql

Nogen der kan fortælle mig hvordan jeg optimerer MySql. eller sætter index på og hvordan det virker?
Avatar billede arne_v Ekspert
27. maj 2006 - 21:38 #1
der er mange forskellige måder at optimere MySQL på

du sætter index på med CREATE INDEX kommandoel eller sætter i flueben i en
admin GUI

men læse lidt om det

http://www.eksperten.dk/artikler/6

http://www.databasejournal.com/features/mysql/article.php/1382791

http://www.sitepoint.com/article/optimizing-mysql-application
Avatar billede kaptajnknas Nybegynder
27. maj 2006 - 22:55 #2
Okay, det vil jeg prøve at læse. Men hvad kan ellers være grunden til at MySql.exe tager ufattelig meget resourser, når der søges i omkring 12000 poster, hvilket jo ikke er ret meget, når man snakker databaser. Min processor kerner 100% ved en søgning, er det normalt?
Avatar billede arne_v Ekspert
27. maj 2006 - 23:29 #3
nej

hvordan ser din query ud ?
Avatar billede kaptajnknas Nybegynder
28. maj 2006 - 10:05 #4
Min string ser sådan ud, den kører i i loop på 15.

Set rs = Conn.Execute("SELECT * FROM notat WHERE modtager = '"&replace(session("email"), "'", "''")&"' AND vis = '1'  ORDER BY ID DESC LIMIT "& currentPage &","& pageSize &"")
Avatar billede arne_v Ekspert
29. maj 2006 - 02:58 #5
det bør du have index på modtager og vis felterne
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 11:01 #6
Hvordan sætter jeg index på, nu har jeg læst en masse om index, men der er ikke nogen steder der beskriver hvordan.
Avatar billede arne_v Ekspert
29. maj 2006 - 14:39 #7
CREATE INDEX kommandoen eller et fluebin i din admin GUI

hvilke værktøj bruger du til database admin ?
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 14:47 #8
Jeg bruger MySql Control Center 0.9.4 BETA
Avatar billede arne_v Ekspert
29. maj 2006 - 15:02 #9
den kender jeg så ikke

men hvis du går ind i "table properties/details" (et skærmbillede hvor du kan se
feltnavne og felttyper) kan du så ikke sætte et flueben i index ?

eller er der en "add index" knap nede i bunden ?
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 16:04 #10
ja der er faktisk en fane neders der hedder index, når jeg klikker på den vises kolonnen ID ssom jeg i sin tid har sat til primær key, den er åbenbart automatisk sat til index så?

Hvad så nu?
Avatar billede arne_v Ekspert
29. maj 2006 - 16:09 #11
er der en add knap som du kan tilføje nye indexes med ?
Avatar billede arne_v Ekspert
29. maj 2006 - 16:09 #12
(og ja - primær nøgler for automatisk index)
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 16:11 #13
ja der er mulighed for at add flere kolonner til index
Avatar billede arne_v Ekspert
29. maj 2006 - 16:12 #14
ikke nye kolonner til index

et helt nyt index
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 16:15 #15
Jo jeg kan klikke på add a new index name
Avatar billede arne_v Ekspert
29. maj 2006 - 16:16 #16
det lyder rigtigt

det gør du så to gange - en gang for hver af de 2 felter du skal have index på
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 16:19 #17
Et øjeblik.. nu siger du felter, mener du så kolonner?
Kan du forklare ganske kort, hvad der rent teknisk sker når der sættes index på?
Avatar billede arne_v Ekspert
29. maj 2006 - 17:13 #18
ja

felt = kolonne
Avatar billede arne_v Ekspert
29. maj 2006 - 17:14 #19
et index i en tabel er ligesom et index bag i en bog

uden index så er du nødt til at læse bogen fra start til slut

med index kan du slå op på lige præcis den rigtige side i bogen
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 17:18 #20
Jamen hvis jeg forstår det korrekt, vil det så ikke være een fordel at sætte alle kolonner til index?
Avatar billede arne_v Ekspert
29. maj 2006 - 17:20 #21
nej

det koster en lille smule ved insættelse per index

og felter som man ikke søger på eller joiner på giver ingen fordele at have index på
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 17:43 #22
Men ellers alle felter man søger på?
Avatar billede arne_v Ekspert
29. maj 2006 - 18:36 #23
ja

eller ihvertfald alle felter som man ofte søger på og hvor søgning ikke er en LIKE
som starter med %
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 18:46 #24
Okay fint.
Vil det faktisk sige, at hvis der ikke er index på, så gemmensøges alle kolonner selom man i statement skriver "select * from tabel where titel = '1'" eksembelvis?
Avatar billede arne_v Ekspert
29. maj 2006 - 18:48 #25
den gennemsøger ikke akke kolonner men den gennemsøger alle rækker hvis der
ikke er index på titel
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 18:49 #26
Det var dog utroligt. okay jeg prøver...
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 19:39 #27
Det virker, den søger nu meget hurtigere og belaster min CPU en hel del mindre :-) er der andre ting jeg kan gøre for at optimerer endnu mere? eller er der noget jeg skal være opmærksom på når jeg fremover opretter kolonner/felter m.m.?
Avatar billede arne_v Ekspert
29. maj 2006 - 20:44 #28
måske lidt fintuning af MySQL parametre
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 20:53 #29
Fint.
Så er svar = points
Avatar billede arne_v Ekspert
29. maj 2006 - 20:57 #30
svar
Avatar billede kaptajnknas Nybegynder
29. maj 2006 - 21:01 #31
points
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