Hi (geen 1 april grap
),
Ik heb een paar databasevraagjes. Ik draai een tabel van 700.000 entries..SELECT queries hierop die zonder index draaien worden erg langzaam (denk aan paar seconden..waar ik max 1 seconde wil..
)
1. Query sneller maken
Hoe optimaliseer ik 'SELECT name FROM names WHERE name LIKE '%blabla%' queries.
Het gaat hier om de dubbele procent tekens..wanneer ik 'blabla%' doe gebruikt ie gewoon de name index..maar nu niet (EXPLAIN gedaan..).
2. Count query versnellen
Is een SELECT COUNT(*) sneller dan een normale SELECT * ? Of maakt dit niet uit.. Mijn probleem is dat ik voor het laten zien van de resultaten het totaal aantal results nodig heb. Deze count's duren soms wat lang (paar seconden)..wat de gebruiker laat wachten..
Het beste zou een snelle COUNT(*) zijn en dan een query met LIMIT en OFFSET oid..die per pagina de resultaten snel laat zien.
3. Resultaten tellen
Hoe count ik het totaal van een query waarin ook een GROUP BY en HAVING zit:
Ik hoop op suggesties die alles wat sneller kunnen maken..Het draait nu op een dual Xeon.. en das al langzaam als ie geen indexen kan gebruiken..dus: laat je horen (My)SQL guru's!!
Ik heb een paar databasevraagjes. Ik draai een tabel van 700.000 entries..SELECT queries hierop die zonder index draaien worden erg langzaam (denk aan paar seconden..waar ik max 1 seconde wil..
1. Query sneller maken
Hoe optimaliseer ik 'SELECT name FROM names WHERE name LIKE '%blabla%' queries.
Het gaat hier om de dubbele procent tekens..wanneer ik 'blabla%' doe gebruikt ie gewoon de name index..maar nu niet (EXPLAIN gedaan..).
2. Count query versnellen
Is een SELECT COUNT(*) sneller dan een normale SELECT * ? Of maakt dit niet uit.. Mijn probleem is dat ik voor het laten zien van de resultaten het totaal aantal results nodig heb. Deze count's duren soms wat lang (paar seconden)..wat de gebruiker laat wachten..
3. Resultaten tellen
Hoe count ik het totaal van een query waarin ook een GROUP BY en HAVING zit:
code:
Bovenstaande query SELECT alle name's met 2 orders.. maar wat ik wil weten is HOEVEEL dit er zijn. Tot nu is mijn enige oplossing de bovenstaande query uitvoeren en in de aanroepende scripttaal het aantal resultaten opvangen..1
| SELECT name, order FROM names GROUP BY order HAVING COUNT(order) = 2 |
Ik hoop op suggesties die alles wat sneller kunnen maken..Het draait nu op een dual Xeon.. en das al langzaam als ie geen indexen kan gebruiken..dus: laat je horen (My)SQL guru's!!
[ Voor 3% gewijzigd door Verwijderd op 01-04-2006 16:05 ]