Lang wachten op resultaten van database
Beste mensen,
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.
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
Je zult even wat meer gegevens moeten geven.
Plaats even de code die je gebruikt om je resultaten op te vragen en een overzicht van columns in het tabel?
Plaats even de code die je gebruikt om je resultaten op te vragen en een overzicht van columns in het tabel?
Waarom doe je een LIKE bij selecteren van country?
Kan dat handmatig aangepast worden door een gebruiken, of selecteren ze die uit een list?
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.
Met where country = 'netherlands' zal het al iets beter gaan
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.
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.





