Witam,
W czasie prób optymalizacji działania mojej bazy nasuneło mi się kilka pytań, może ktoś sie już z tym spotkał:

1. Kolejka jest budowana na podstawie zadanych kryteriów wyszukiwania (przekazanych przez formularz). Jak optymalnie pobrać liczbę pasujących rekordów (użyte do stronicowania i informacji dla użytkownika) a następnie pobrać ich tylko XX (ustalone w LIMIT). Ja mam to zrobione teraz tak i czuję że takie podwójne zapytanie nie jest super optymalne:):
  1. <?php
  2.  
  3. $query=&#092;"SELECT DISTINCT (...) FROM tabela1 AS t1, tabela1 AS t2,(...) WHERE (...) ORDER BY (...)\";
  4. $result=mysql_query($query);
  5. $ile=mysql_num_rows($result);
  6. //...wyświetlenie info dla użytkownika (ilość pasujących)
  7. //...zbudowanie stronicowania
  8. $query.=&#092;" LIMIT $offset,XX\";
  9. $result=mysql_query($query);
  10. while($row=mysql_fetch_array($result)){
  11. //...wyświetlanie porcji informacji
  12. }
  13.  
  14. ?>



2. Na każdej podstronie korzystającej z bazy danych używam
  1. <?php
  2. ?>
, wg manuala jeśli połączenie jest otwarte, to zwraca to id tego połączenia. Czy cos da zamykanie połączenia (
  1. <?php
  2. ?>
) pod koniec skryptu. A może zamiast normalnych połączen dać stałe?


3. Wyszukuję w polach TEXT ciągi znaków przez klauzulę:
...pole_txt LIKE %$klucz%...
W manualu MySql znalazłem coś takiego:
Cytat
The index also can be used for LIKE comparisons if the argument to LIKE is a constant string that doesn't start with a wildcard character

...a z drugiej strony:
Cytat
MySQL 4.0 and up performs an additional LIKE optimization. If you use ... LIKE '%string%' and string is longer than three characters, MySQL will use the Turbo Boyer-Moore algorithm to initialize the pattern for the string and then use this pattern to perform the search quicker

Czy to znaczy że jednak warto będzie na te pola textowe w których jest szukanie nałożyć FULLTEXT INDEX?