Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Firebird/Interbase bardzo wolno wykonuje zapytania
Forum PHP.pl > Forum > Bazy danych
rafi-88
Mam problem z bazą danych Firebird. Baza jest z programu zewnętrznego.
Łączę się z nią przez PHP (PHP 5.3.3, Firebird API version 21, LI-V6.3.0.26054 Firebird 2.5 Release Candidate 3).

Na kompie 192.168.0.2(Win XP) jest uruchomiony serwer Firebirda, na kompie 192.168.0.1(Linux) jest zainstalowany PHP+Firebird.
Połączenie z bazą jest wykonywane szybko, natomiast zapytania idą strasznie długo.

Wiem już, że:
Nie jest to problem sieci bo nic się nie zmienia jak uruchamiam PHP na kompie na którym jest plik bazy i serwer (localhost).
Nie jest to problem wersji Firebirda/PHP, próbowałem kilku różnych.
Nie jest to problem "DISTINCT", bez tego też idzie długoo.
Nie jest to błąd bazy/indeksów itp. Programy windowsowe do obsługi baz Firebirda wykonują zapytania w mgnieniu oka winksmiley.jpg


Poniższy kod (70 zapytań) jest wykonywany 2.5 do 3 sekund (masakra jakaś)!

PLS Help!

CODE

$plik_bazy="c:/baza/baza.gdb";
$host = "192.168.0.2:" . $plik_bazy;
$username="SYSDBA";
$password="masterkey";

$dbh = ibase_connect($host, $username, $password);

$query="SELECT DISTINCT ID_MATKI FROM `DOK` WHERE NUMERDOK LIKE 'JO%' OR NUMERDOK LIKE 'JN%'";

for ($a=0;$a<70;$a++) {
$wynik = ibase_query($dbh, $query);
}


maly_swd
70 zapytan w 3 sekundy to "normalny wynik", okolo 0,04sek na 1 zapytanie.

Czy aby na 100% chcesz wykonywac 70 takich samych zapytan, a nie pobrac 70 rekordow z 1 zapytania?


  1. $query="SELECT DISTINCT ID_MATKI FROM `DOK` WHERE NUMERDOK LIKE 'JO%' OR NUMERDOK LIKE 'JN%'";
  2. $wynik = ibase_query($dbh, $query);
  3.  
  4. for ($a=0;$a<70;$a++) {
  5. $dane[]=ibase_fetch_array($wynik);
  6. }
rafi-88
maly_swd - najprostsze pomysły są najlepsze DZIĘKI!
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.