Indeks det, der virker mest logisk (det burde forhåbentlig være indlysende, f.eks. en kunde-id-kolonne i KUNDER-tabellen).
Kør derefter din applikation og indsaml statistik med jævne mellemrum for at se, hvordan databasen klarer sig. RUNSTATS på DB2 er et eksempel, jeg håber, MySQL har et lignende værktøj.
Når du finder nogle ofte kørende forespørgsler, der udfører fuld tabelscanninger (eller tager for lang tid af andre årsager), så og først derefter , skal du tilføje flere indekser. Det nytter ikke meget at optimere en gang om måneden-kør-ved-midnat-forespørgsel, så den kan slutte kl. 12:05 i stedet for kl. 12:07. Det er dog en kæmpe forbedring at reducere en kundevendt forespørgsel fra 5 sekunder ned til 2 sekunder (det er stadig for langsomt, kundevendte forespørgsler bør være under sekund, hvis det er muligt).
Flere indekser har en tendens til at bremse indsættelser og fremskynde forespørgsler. Så det er altid en balancegang. Det er derfor, du kun tilføjer indekser som et specifikt svar på et problem. Alt andet er for tidlig optimering og bør undgås.
Derudover skal du gense de indekser, du allerede har, med jævne mellemrum for at se, om de stadig er nødvendige. Det kan være, at de forespørgsler, der fik dig til at tilføje disse indekser, ikke længere køres ofte nok til at berettige det.
For at være ærlig tror jeg ikke, at indeksering af tre kolonner på en tabel vil få dig til at lide, medmindre du planlægger at gemme et virkeligt stort antal rækker :-) - indeksering er ret effektivt.
Efter din redigering, hvor der står:
Mit svar er, at 200 poster om dagen er en ekstrem lille værdi for en database, du vil bestemt ikke have noget at bekymre dig om med disse tre indekser.
Netop i denne uge importerede jeg transaktioner til en værdi af en dag til en af vores databasetabeller på arbejdet, og den indeholdt 2,1 millioner poster (vi får mindst én transaktion pr. sekund over hele dagen fra 25 separate maskiner). Og den har fire separate sammensatte taster, som er noget mere intensiv end dine tre individuelle taster.
Indrømmet, det er på en DB2-database, men jeg kan ikke forestille mig, at IBM er så meget bedre end MySQL-folkene, at MySQL kun kan håndtere mindre end 0,01 % af DB2-belastningen.