hoe "slim" is MySQL?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

15/09/2011 16:04:59
Quote Anchor link
Zomaar eens een vraag die me ineens te binnen schoot ... hoe "slim" is MySQL eigenlijk?

Stel je hebt een database met daarin 20 miljoen producten, allemaal met een eigen uniek artikelnummer. De artikelnummers beginnen met 3 letters gevolgd door een reeks cijfers, bijvoorbeeld ABC303293202 of XTH110393234. De artikelnummers staan niet op alfabetische / numerieke volgorde in de database.

Stel je hebt een index op het artikelnummer en je wil een bepaald artikelnummer opzoeken... hoe gaat MySQL dan te werk en hoe "slim" is MqSQL?

Stel het artikelnummer dat je wilt opzoeken is QEM98223132.

Hoe gaat MySQL vervolgens te werk? Ik kan me voorstellen dat ie via de index eerst gaat kijken of er een artikelnummer is dat begint met de letter Q... maar wat dan? Gaat ie vervolgens kijken of er een artikelnummer is dat begint met QE en vervolgens QEM, QEM9, QEM98 enzovoorts... net zo lang totdat ie een match heeft? Of werkt het zo niet?
Gewijzigd op 15/09/2011 16:05:25 door Ozzie PHP
 
PHP hulp

PHP hulp

18/04/2024 13:59:48
 
- SanThe -

- SanThe -

15/09/2011 16:08:58
Quote Anchor link
Normaal staat een index gesorteerd. Dus daar is dat nummer snel gevonden. En die index wijst dan naar het volledige record.
 
Ozzie PHP

Ozzie PHP

15/09/2011 16:17:43
Quote Anchor link
Dus die index is eigenlijk een 2e tabel ofzo? Maar stel dat er 100.000 records zijn die beginnen met een Q gaat ie dan in die index tabel al die 100.000 records doorlopen net zolang totdat ie een match vindt of is MySQL zo slim dat ie ziet dat het nummer met een QEM begint en begint ie dus ook vanaf QEM te zoeken? Ik snap niet zo goed hoe dat werkt.
 
Obelix Idefix

Obelix Idefix

15/09/2011 16:23:29
Quote Anchor link
Volgens mij is het te vergelijken met een ouderwetse kaartenbak.
Als je daarin de zaakjes netjes ordent (=indexeert), kun je heel snel de juiste kaart vinden. Geen index of op de verkeerde gegevens, dan zoek je wat langer...
 
- SanThe -

- SanThe -

15/09/2011 16:41:44
Quote Anchor link
Er zijn diverse zoekmethodes die, indien een index aanwezig, het één voor één zoeken overbodig maken. Een simpel voorbeeldje is: Pak steeds de middelste en kijk hoger of lager. Bij géén index zullen alle records moeten worden bekeken.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/09/2011 16:55:44
 
Ozzie PHP

Ozzie PHP

15/09/2011 18:17:38
Quote Anchor link
Oké, bedankt!
 
Bartje Jansen

Bartje Jansen

15/09/2011 18:36:24
Quote Anchor link
Meestal wordt een BTREE index gebruikt, dat is het standaard type index voor vele databases. Wikipedia heeft daar de nodige uitleg over:
http://en.wikipedia.org/wiki/B-tree

Er is nog veel meer informatie te vinden over dit onderwerp, Google er eens op.

Ps. de optimizer van MySQL is vrij dom/beperkt, maar een BTREE gebruiken in een simpele query is geen probleem.
 
Tim van Norde

Tim van Norde

16/09/2011 12:27:14
Quote Anchor link
Klink ik nu stom of kun je niet gewoon reguliere expressie in je sql gebruiken?
 
Ozzie PHP

Ozzie PHP

16/09/2011 14:07:22
Quote Anchor link
Hoe bedoel je Tim?
 
Bartje Jansen

Bartje Jansen

16/09/2011 14:32:40
Quote Anchor link
Tim van Norde op 16/09/2011 12:27:14:
Klink ik nu stom of kun je niet gewoon reguliere expressie in je sql gebruiken?

Dat kan, maar wat wil je daarmee bereiken? De performance van jouw queries zal er niet beter van worden, MySQL kan dan geen index meer gebruiken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.