Lang wachten op resultaten van database
Ik heb een tabel met gegevens van mensen met 340.000+ rows.
Alleen ik moet erg lang wachten voordat ik me resultaten op een pagina krijg, ookal is het maar wachten op 2 resultaten.
Ik selecteer maar één veld in mijn query.
De tabel-engine is InnoDB.
Hebben jullie tips voor mij?
Alvast bedankt.
Gewijzigd op 04/10/2015 12:36:45 door Marthijn Buijs
Plaats even de code die je gebruikt om je resultaten op te vragen en een overzicht van columns in het tabel?
Kan dat handmatig aangepast worden door een gebruiken, of selecteren ze die uit een list?
Ik ben bezig met een script om te zoeken maar dit was puur om te testen.
Maar je slaat kennelijk 3400000 keer de hele string op?
Beter om een losse tabel met landen te hanteren en in de grote tabel alleen naar het nummer van het land te verwijzen . Foreign key.
Vergelijken met where country_id = 31
Zeker als dat dan ook nog een index is, zal dat sneller gaan
Toevoeging op 04/10/2015 14:47:56:
Daarnaast misbruik je group by om je dubbele resultaten te verdoezelen.
Bij nader inzien :
Je zoekt dus niet de users maar de landen die netherlands in de naam hebben.
Zoeken in de landen tabel Is dan msec werk. Hooguit nog met een join op de grote tabel om te zien of ze voorkomen.
De query lijkt me nogal onzinnig. Bij een genormaliseerde database zou ik een losse tabel met Country code en Country verwachten. Indien je toch deze query wil uitvoeren is het aanmaken van index op het veld Country de enige oplossing. LET wel op dat een LIKE statement startend met % geen index kan gebruiken, omdat de database dan op een vrije tekst moet zoeken.