Ik vroeg mij af wat de beste manier is om het volgende te realiseren:
stel ik heb een database met een miljoen entries.
daar laat ik een zoekactie op los met bepaalde criteria.
de uitkomt is bv. 2500 records die voldoen aan mijn zoekcriteria.
Nu wil ik ze natuurlijk niet allemaal op beeld hebben dus wil ik alleen de eerste 10 op beeld hebben. Maar ik wil wel graag het totaal van gevonden records weten.
concreet qua code had ik het volgende verzonnen:
wat als resultaat iets laat zien als:
Is dit de snelste en beste manier om ziets te doen? Als een zoekquery zo'n 5 seconden duurt is het niet makkelijker om eerst een 'count(id) from xx where xx' en daarna een 'select xx from xx where xx limit 10' te doen, toch?
iemand anders nog ideeen ter verbetering of doe ik iets totaal overbodigs?
Google is hier nl zo snel in
stel ik heb een database met een miljoen entries.
daar laat ik een zoekactie op los met bepaalde criteria.
de uitkomt is bv. 2500 records die voldoen aan mijn zoekcriteria.
Nu wil ik ze natuurlijk niet allemaal op beeld hebben dus wil ik alleen de eerste 10 op beeld hebben. Maar ik wil wel graag het totaal van gevonden records weten.
concreet qua code had ik het volgende verzonnen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| $total_hits = 0; $limit_nr = 10; $sql = "SELECT id, naam FROM db WHERE criteria = 'zoekoptie'"; $result = mysql_query ($sql); if ($row = mysql_fetch_array($result)) { $result_line = "Gevonden:<br><br>"; do { $total_hits++; if ($total_hits <= $limit_nr) { $db_id = $row["0"]; $db_naam = $row["1"]; $result_line = $result_line.$db_naam." (id ".$db_id.")<br>\n"; } } while($row = mysql_fetch_array($result)); } else { $result_line = "niets gevonden"; } print ("Totaal aantal gevonden entries: ".$total_hits."<br><br>".$result_line); |
wat als resultaat iets laat zien als:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Totaal aantal gevonden entries: 2500 Gevonden: naam 1 (id 1) naam 15 (id 15) naam 26 (id 26) naam 65 (id 65) naam 566 (id 566) naam 673 (id 673) naam 77565 (id 77565) naam 87455 (id 87455) naam 93377 (id 93377) naam 104455 (id 104455) |
Is dit de snelste en beste manier om ziets te doen? Als een zoekquery zo'n 5 seconden duurt is het niet makkelijker om eerst een 'count(id) from xx where xx' en daarna een 'select xx from xx where xx limit 10' te doen, toch?
iemand anders nog ideeen ter verbetering of doe ik iets totaal overbodigs?
Google is hier nl zo snel in