Lang wachten op resultaten van database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer / Innovatieve software / Virtual Re

Functieomschrijving Als .Net developer werken aan innovatieve software waar onder andere gebruik gemaakt wordt van Virtual Reality? Bijdragen aan een organisatie waar je uitgedaagd wordt om continu verbeteringen en ontwikkelpunten te ontdekken en door te voeren? Werken in de omgeving Putten? Reageer dan nu voor meer informatie! Het pro-actief aandragen van verbeteringen voor de bestaande applicatie; Ontwikkelen van nieuwe functionaliteiten; Doorvoeren van aanpassingen en wijzigingen; Verantwoordelijk voor koppelingen met andere systemen; Op de hoogte blijven van technische ontwikkelingen. Functie-eisen Hbo werk- en denkniveau; Een afgeronde IT gerelateerde opleiding; Minimaal 1 jaar professionele ervaring als developer; Aantoonbare kennis van C#; Initiatiefrijke

Bekijk vacature »

Marthijn Buijs

Marthijn Buijs

04/10/2015 12:29:53
Quote Anchor link
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.
Gewijzigd op 04/10/2015 12:36:45 door Marthijn Buijs
 
PHP hulp

PHP hulp

17/10/2019 05:57:07
 
Joni Fleischer
Moderator

Joni Fleischer

04/10/2015 12:36:58
Quote Anchor link
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?
 
Marthijn Buijs

Marthijn Buijs

04/10/2015 12:48:42
Quote Anchor link
Dit is mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$db
= new MySQLi('localhost', 'root', '', 'database');

$query = $db->query('SELECT country FROM users WHERE country LIKE "%netherlands%" GROUP BY country ORDER BY country');

while($data = $query->fetch_object()) {
    echo $data->country . '<br />';
}


?>


Structuur:
http://s13.postimg.org/c7u6ll2f9/Naamloos.png
Gewijzigd op 04/10/2015 12:48:55 door Marthijn Buijs
 
Joni Fleischer
Moderator

Joni Fleischer

04/10/2015 13:03:08
Quote Anchor link
Waarom doe je een LIKE bij selecteren van country?
Kan dat handmatig aangepast worden door een gebruiken, of selecteren ze die uit een list?
 
Marthijn Buijs

Marthijn Buijs

04/10/2015 13:12:25
Quote Anchor link
Ik ben bezig met een script om te zoeken maar dit was puur om te testen.
 
Ivo P

Ivo P

04/10/2015 14:43:28
Quote Anchor link
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.
 
Robert Steegh

Robert Steegh

06/10/2015 21:54:46
Quote Anchor link
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.
 



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.