Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nadmierne obiążenie serwera bazy mysql
Forum PHP.pl > Forum > Bazy danych > MySQL
sylwekb
Poniższe zapytanie wygenerowało w mojej bazie danych ok 2.5GB tabelę tymczasową na serwerze MySQL co dodatkowo przyczyniło się do obciążenia dysku serwera MySQL.

  1. SELECT l.log_docid, l.log_ip, l.log_datetime, l.log_user, d.dmname, u.name FROM nazwa_tabeli_docman_log l, nazwa_tabeli_docman d, nazwa_tabeli_users u WHERE l.log_docid = d.id AND (l.log_user = u.id OR l.log_user=0) ORDER BY l.log_datetime DESC LIMIT 50G



Chyba wiem jak powinna wyglądać takie zapytanie

  1. SELECT l.log_docid, l.log_ip, l.log_datetime, l.log_user, d.dmname, u.name FROM rzeczyca_docman_log l FORCE INDEX(idx_ldattim), rzeczyca_docman d, rzeczyca_users u WHERE l.log_docid = d.id AND (l.log_user = u.id OR
  2. l.log_user=0) ORDER BY l.log_datetime DESC LIMIT 50G



tylko dlaczego generuje błąd? #1064 - Something is wrong in your syntax obok '50G' w linii 2
matiit
Z tego co kojarzę to FROM
Kod
nazwa_tabeli_docman_log l, nazwa_tabeli_docman d, nazwa_tabeli_users u

Stworzy Ci tabelę tymczasową o mocy |tabela1| * |tabela2| * |tabela3|, gdzie |x| to moc x.

To będzie największe wąskie gardło.
Joinami się zainteresuj.

Co do indexów:
http://dev.mysql.com/doc/refman/5.0/en/create-index.html
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.