Avatar billede falslev Nybegynder
01. juni 2004 - 14:12 Der er 7 kommentarer

Hjælp til at indexere en tabel

Min MySQL database er pludselig blevet ret stor og jeg søger derfor hjælp til nogen gode steder hvor jeg kan blive klogere omkring indexering og derved opnå noget bedre hastighed.
Avatar billede mahler Nybegynder
01. juni 2004 - 14:30 #1
Jeg syntes faktisk et af de bedste steder er http://dev.mysql.com/doc/mysql/en/Optimising_Database_Structure.html

Generelt:
- sørg for at der er nok, men ikke for mange indexes.
- sørg for at der er søgning på de felter, der bruges i "WHERE"-delene søgninger.
- brug eventuelt combined indexes, hvis du ofte søger på to felter.
- prøv de SQL-statements, du bruger ofte i mysql-konsollen med EXPLAIN foran.
Avatar billede arne_v Ekspert
01. juni 2004 - 14:30 #2
Du bør som ofteest have index på felter der bruges i WHERE og ON betingelser.

Syntaxen er:

CREATE INDEX indexnavn ON tabelnavn(feltnavn)
Avatar billede falslev Nybegynder
01. juni 2004 - 17:47 #3
Tak
Det hjalp en del tror jeg :)

Sløver det at lave for mange index og kan man lave dem for store (altså for mange i en)

Skal man lave index på ID som ofte er PRIMARY ??
Avatar billede mahler Nybegynder
01. juni 2004 - 17:52 #4
Nej. Der er altid automatisk index på primary key.

Det er ikke størrelsen af indexet (ikke mærkbart), men antallet af indexes, der sløver, og der hvor det sløver er når du opdaterer din tabel (updates, inserts, replaces) - mens læsninger ikke bliver langsommere af at der er mange indexes.

Bemærk i øvrigt at mysql kun bruger et index pr tabel pr query.
Avatar billede falslev Nybegynder
01. juni 2004 - 18:03 #5
Hvad mener du med:

Bemærk i øvrigt at mysql kun bruger et index pr tabel pr query.
Avatar billede arne_v Ekspert
01. juni 2004 - 19:00 #6
Normalt vil det kun være INSERT som påvirkes af mange indexes.
Avatar billede mahler Nybegynder
01. juni 2004 - 20:19 #7
at selvom du har 3-4 indexes på en tabel, så kan mysql i en enkelt query kun bruge et index pr tabel.

Hvis du har en tabel med col1, col2 og col3 - hvor col1 er primær nøgle kan du med et combined index på (col2,col3) bruge det til at søge i både col2 eller kombinationen af col2 og col3, men ikke col3 alene.

Du kan heller ikke bruge indexes søge på col1 og col2 - her mysql query optimizerend bruge "det bedst egnede index, og scanne de rækker der vælges ud fra det sekventielt efter det andet kriterie.
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