Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP MYSQL - szukanie w całej bazie
Forum PHP.pl > Forum > PHP
dvdx95
Witam.
Mam problem , otóż poszukuje skryptu php który przeszuka baze danych w poszukiwaniu danego wyrazenia.
Posiadam taki który zrobiłem sam lecz widze że gdy mam bardzo duża baze danych te rozwiązanie staje się dość powolne.
  1. for($z=0 ; $z >= 10000(przykladowa liczba tabel w bazie) ; $z++){
  2. $rest = mysql_query("SELECT userid FROM `game$z` WHERE `userid` LIKE '".$_GET['id']."' ");
  3. if (mysql_num_rows($rest) > 0) {
  4. //tutaj mam jakies tam polecenia//}
  5. }

Potrzebuje jedynie informacje w ktorej z tabel znajduje sie moje $_GET['id']
ten skrypt bedzie przeszukiwac wszystkie tabele od game1 do game10000 i to troche zajmuje.
Moje pytanie czy nie da się tego jakoś szybciej wykonywaćquestionmark.gif Bo ja nie mam pomysłow.
Zasadniczo nie wiem w której tabeli w bazie znajduje sie moje $_GER['id'] natomiast wiem ze jest ono w kolumnie 'userid' zawsze .
Nie da się tutaj zastosowac jakiegos innego zapytania czy musze przeszukac je wszystkie??
Prosze o jakieś podpowiedzi
trueblue
Jeśli masz tyle tabel o tej samej strukturze w bazie, to budowa tej, jest nieprawidłowa.
dvdx95
tak to sa tabele o tej samej strukturze , ja potrzebuje sie dowiedziec tylko w ktorej z nich znajduje sie moje $_GET['id']
trueblue
Zamiast LIKE wystarczy równość.
Na userid przydałby się indeks. Jeśli nie jest założony, to musiałbyś analogicznie do wyszukiwania w pętli założyć indeksy we wszystkich tabelach (i wtedy szukać).
Zamiast robić pętlę w PHP możesz stworzyć procedurę w MySQL.

A na koniec przebuduj strukturę bazy.
Pyton_000
od biedy zrobić jakąś tabelkę z kolumną db_id, user_id i wpakować tam wszystkie potrzebne dane
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.