Mam w bazie 540 844 rekodrów, przeszukuje je w taki sposób:

  1. <?php
  2. $wynik = $_GET['wyszukaj'];
  3.  
  4. $iloscrekordow = 10; 
  5.  
  6. $zapytanie = mysql_query("SELECT COUNT(login) FROM userdata WHERE MATCH(login) against ('$wynik*' IN BOOLEAN MODE) ");
  7. $red = mysql_result($zapytanie, 0);
  8. $zamianaliczb = number_format($red, 0, ' ', ' ');
  9.  
  10. if ($red > $iloscrekordow) {$num_pages = ceil ($red/$iloscrekordow);} else {$num_pages = 1;} 
  11.  
  12. if (isset($_GET['first'])) {
  13. if ( (is_numeric($_GET['first'])) AND ($_GET['first'] > 0) ) {$s = $_GET['first'];} else {$s = 1;} } else {$s = 1;} 
  14.  
  15. $zap= "SELECT login,data,email,fotografia,opis FROM userdata WHERE MATCH(login) against ('$wynik*' IN BOOLEAN MODE) LIMIT ".($s-1).", $iloscrekordow";
  16. $quer = mysql_query($zap);
  17.  
  18. $polacz = mysql_query('SELECT iloscuserow FROM onlineuser LIMIT 1');
  19. $liczy = mysql_fetch_row($polacz);
  20. $iloscrekordow = $liczy[0];
  21. $zamianaliczb2= number_format($iloscrekordow, 0, ' ', ' ');
  22. ?>


I tak się zastanawiam czy jest ono dobre? Dodać FULLTEXT dla pola login? To zwiększy wydajność? Jak miałem ok 60k rekordów było ok, ale teraz trochę "laguje" przy wyszukiwaniu wyników... Tak się zastanawiam czy macie jakieś propozycje, z własnych doświadczeń...

ps. nie wklejałem kodu od stronicowania, chyba nie ma on znaczenia...

A i jeszcze jedno... Czy takie wyszukiwanie będzie na serwerze działało szybciej niż baza która jest wyłączana na localu?