mysql limit vraag

  • Hallo allemaal,


    ik heb een vraag:
    Laat je queries sneller lopen als je een limit toevoegt aan het einde van je query?


    Bijvoorbeeld als je uit een grote tabel, 1 persoon moet gaan selecteren op ID.
    Als je dan LIMIT 0, 1 op het einde toevoegt, stopt je query dan zodra hij de eerste heeft gevonden?
    Of hoe werkt dit precies?


    Vriendelijke groeten,
    Willem

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Bijvoorbeeld als je uit een grote tabel, 1 persoon moet gaan selecteren op ID.
    Als je dan LIMIT 0, 1 op het einde toevoegt, stopt je query dan zodra hij de eerste heeft gevonden?

    Maar een id is uniek, dit impliceert dat er maar (maximaal) één record is. LIMIT 0, 1 voegt dan waarschijnlijk niet zoveel toe (daarnaast staat dit nogal suf, alsof je jezelf ervan wilt verzekeren dat je ook maar echt één record selecteert). Je zou dit natuurlijk altijd kunnen toetsen door het uitvoeren van benchmarks maar ik denk niet dat LIMIT je query sneller maakt, andere zaken hebben meer invloed op de snelheid.


    Iets wat redelijk doorslaggevend is bij de zoeksnelheid is of (de combinatie van) de kolom(men waarmee je zoekt) geïndexeerd is. Een primaire sleutel heeft automatisch een index dus daarop/daarmee kun je altijd snel zoeken. Veel sneller dan SELECT <whatever> FROM <tabel> WHERE id = <index van geindexeerde kolom> wordt het niet.


    Om inzage te krijgen wat MySQL doet en hoe deze tabellen aan elkaar fietst kun je SELECT statements vooraf laten gaan door EXPLAIN. Vervolgens krijg je een tabelletje die je vertelt van welke keys of andere hulpstukken MySQL gebruik maakt om queries vlot uit te voeren. Indien je trage queries hebt loont het de moeite om eens via EXPLAIN te kijken waar volgens MySQL de bottleneck(s) zit(ten).


    Ook de keuze van een engine kan je hierbij helpen. In een database met enkel MyISAM (default engine) tabellen hangen deze als los zand aan elkaar. Je kunt geen foreign keys naar een andere tabel definiëren en dus ook niet op die manier meeliften op de index die daar mogelijk op bestaat geloof ik. Om meerdere redenen is het verstandig om InnoDB als engine te gebruiken als je van plan bent om een relationele database te bouwen. Indien je gebruik maakt van de voorzieningen van InnoDB kun je ook redelijk eenvoudig performancewinst meepakken.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!