Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> szybkość działania dużych baz danych
hobibit
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 22.03.2008

Ostrzeżenie: (0%)
-----


Nie wiem czy dobrze mi się wydaje czy gdzieś w kodzie może błąd popełniłem.
Zdaje się że duże bazy danych działają dużo, dużo wolniej.
Mam kawałek skryptu php który pobiera jeden rekord z bazy mysql.
Jeśli baza m jeden rekord wszystko idzie szybko (przykładowo jeden, może być że 100), kiedy ma natomiast 10 milionów idzie powolnie. Normalna sprawa, ma więcej rekordów do przejrzenia itp.
Czy jest jakiś sposób żeby działało to tak samo szybko przy dużych bazach albo przynajmniej nie strasznie wolno.
Cashowanie nie zadziała bo dan są cały czas zmieniane
Nie wiem czy LIMIT 1, zadziała tak ze po znalezieniu przestanie dalej szukać, ale to zadziała tylko gdy rekordy będą z 'przodu' bazy danych.
Czy są jakieś sposoby na to?
Może zmiana bazy danych na jakiąś inną, ale z innymi nie mam doświadczenia więc proszę o rade która dobrze się sprawdza z dużymi bazami danych.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hobibit
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 22.03.2008

Ostrzeżenie: (0%)
-----


Więc z pewnością gdzieś błąd zrobiłem ale za chiny nie wiem gdzie.
id int(8)
id_mapa int(3)
wnetrze_budynku int(2)
x int(5)
y int(5)
typ tinyint(2)
grafika varchar(5) latin1_swedish_ci
w_pn tinyint(1)
w_ws tinyint(1)
w_pd tinyint(1)
w_za tinyint(1)
surowiec tinyint(2)
surowiec_nazwa varchar(30) latin1_swedish_ci
surowiec_st tinyint(1)
surowiec_wsp1 varchar(15) latin1_swedish_ci
surowiec_wsp2 varchar(15) latin1_swedish_ci
surowiec_mod tinyint(3)
fabryka tinyint(2)
id_budynek int(6)
budynek_typ int(2)
budynek_gracz int(7)
budynek_grafika varchar(1) latin1_swedish_ci
id_gracz int(6)
grafika_gracz smallint(4)
front tinyint(1)
zwrot tinyint(1)
szerokosc tinyint(1)
dlugosc tinyint(1)
czas int(11)
obiekt_1 int(5)
obiekt_2 int(5)
obiekt_3 int(5)
obiekt_4 int(5)

Zapytanie php wygląda tak:
  1. $calaWidocznaMapa = mysql_query('SELECT x,y,id_gracz,grafika,grafika_gracz,zwrot,obiekt_1,obiekt_2,obiekt_3,obiekt_4 FROM mapa WHERE id_mapa="'.$pierwszePole['id_mapa'].'" AND x>="'.$X_min.'" AND x<="'.$X_max.'" AND y>="'.$Y_min.'" AND y<="'.$Y_max.'" ');


Z całego skryptu wszystkie pozostałe zapytania usunąłem, nic więcej praktycznie nie ma (1,2 ale małe).
Zawsze pobieram taką samą ilość rekordów, zawsze. Zawsze robie z nimi dokładnie to samo, ten sam skrypt.
Kiedy w tablicy jest 1000 rekordów wszystko śmiga, kiedy jest 1000000 żółwi się strasznie mimo że niby pokazuje za operacja zajmuje mu najwyżej sekunde.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 19:15