[mySQL] Indexes

Pagina: 1
Acties:

  • BetuweKees
  • Registratie: Januari 2003
  • Laatst online: 15-05 20:44

BetuweKees

Flipje uit Tiel

Topicstarter
Iets wat ik me al een tijdje afvraag is wanneer je nou precies INDEXes moet gebruiken in mySQL. Normaal gesproken voeg ik een INDEX toe aan bijna alle velden waarop ik zoek, iets waarvan ik uit de mySQL docs begrijp dat dit het het snelste zoek resultaat oplevert. Volgens een aantal anderen zou gebruik van te veel INDEXen weer een te grote overhead op gaan leveren, waardoor de snelheid weer zou dalen.

Nu vraag ik me af waar nou precies de balans ligt tussen de grote van in de index bestanden en overhead, en een zo snel mogelijke database.
Moet ik enkel een INDEX zetten op de id's waar ik verschillende tables mee join, of moet ik ze ook toevoegen aan bv velden met date, time, floats en varchars? Alleen aan grote tabelen (die wsch meer snelheidswinst halen uit een INDEX) of aan alle tabellen?

Iemand die me dit kan uitleggen :?

Through meditation I program my heart to beat breakbeats and hum basslines on exhalation -Blackalicious || *BetuweKees was AFK; op de fiets richting China en verder


  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 10-11-2025

OkkE

CSS influencer :+

Alleen indexen leggen op velden die je veel gebruikt in je query's. Je IDs zijn waarschijnlijk meestal primary key, waardoor er sowieso al een index op ligt. Zo doe ik het tenminste altijd..

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • Arjan A
  • Registratie: November 2000
  • Laatst online: 15:43

Arjan A

Cenosillicafoob

Dat vroeg ik me gisteravond ook af, ik heb gegoogled en kwam bij een mooie FAQ van tweakers uit :)

(Deze: P&W FAQ - SQL)

[ Voor 26% gewijzigd door Arjan A op 14-11-2003 13:04 . Reden: URL erbij ]

Canon EOS | DJI M2P
Fotoblog · Mijn werk aan jouw muur


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
Indexen leg je op velden waarop je zoekt, waarop gejoined wordt en eventueel waarop je sorteert.
Let er wel op dat indexen een vertragend effect hebben bij updaten/inserts/deletes. Leg dus geen indexen op velden die het niet nodig hebben.

https://fgheysels.github.io/


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 19:50

ripexx

bibs

Kort gezegt.

Voordelen van indexes: sneller zoek in tabellen.
Nadeel update, inserts en delete query's hebben meer overhead omdat alle indexen bijgewerkt moeten worden.

Zeker bij een join is het handig dat je join op kolomen waar een index op staat. Natuurlijk is het zo dat bij een grotere tabel je het verschil sneller merkt aangzien de tabel sneller doorlopen kan worden. Verder moet je een gezonde afweging maken tussen een index en je queries. Hoevaak gebruik je een bepaalde query?

Ik weet niet wat het effect is van een index als je soteerd op een kolom. Wel is het zo dat zodra je sorteerd met 'DESC' MySQL overgaat op een filesort waardoor het redelijk traag kan worden. Ook kan je testen door "EXPLAIN" voor je query te zetten, je ziet dan welke indexen er gebruikt worden en kan je eventueel je indexen aanpassen. :)

buit is binnen sukkel