![]() |
![]() |
![]() ![]()
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. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no to ci napisano przeciez:
zaloz indexy na pola: x, y oraz id_mapa Dodatakowo skoro to są liczby (x,y, id_mapa) to nie bierz ich w apostrofy. Liczba to liczba a nie tekst. |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
zaloz indexy na pola: x, y oraz id_mapa Wydaje mi się, że lepiej sprawdziłby się tutaj 1 indeks założony na te 3 kolumny (w kolejności: id_mapa, x, y). W zapytaniu kolega i tak wyciąga rekord właśnie po takim warunku i w takiej kolejności, a przynajmniej odpadłby narzut aktualizacji 3 indeksów po zmianie danych w bazie. Przy SELECT pewnie różnicy by nie było widać, ale przy INSERT/UPDATE/DELETE już chyba tak. Myślę, że warto spróbować. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 30.09.2025 - 01:33 |