Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Optymalizacja zapytań
pitu
post
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


Witam

Posiadam stronę WWW, na której użytkownicy wyszukują muzykę. Każda nowa fraza, która jest wyszukiwana jest zapisywana do bazy. W frazach istniejących aktualizowany jest licznik wyszukań. Aktualnie w dość szybkim czasie tabela zapełnia się rekordami, w miesiąc dochodzi nawet do 30-50k nowych rekordów. Przy każdym wyszukaniu cała tabela jest przeszukiwana, przez co MySQL dość mocno obciąża CPU serwera.

Na razie staram się systematycznie czyścić tabele, lecz wolałbym jakieś inne rozwiązanie usprawniające/przyspieszające. Frazy jak i ilości wyszukań wykorzystywane są do chmury tagów, ostatnio wyszukiwanych oraz najlepszych dlatego wolałbym nie czyścić tabel.

Zrzut tabeli
  1. CREATE TABLE `mp3_search` (
  2. `search_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `search_txt` text NOT NULL,
  4. `search_ile` int(11) NOT NULL DEFAULT '0',
  5. `search_data` text character SET latin1 collate latin1_general_ci NOT NULL,
  6. `search_datal` text character SET latin1 collate latin1_general_ci NOT NULL,
  7. `search_datarss` text character SET latin1 collate latin1_general_ci NOT NULL,
  8. PRIMARY KEY (`search_id`)
  9. )


Wykonywane zapytania podczas wyszukiwania muzyki przez użytkownika
  1. SELECT search_txt mp3_search WHERE search_txt='szukany tytul'
  2.  
  3. jeżeli fraza jest w bazie:
  4. UPDATE mp3_search SET search_ile=search_ile+1, search_datal='".date("Y.m.d H:i")."', search_datarss='".date("D, d M Y G:i:s")." +0000' WHERE search_txt='szukany tytul'
  5.  
  6. jeżeli frazy nie ma w bazie:
  7. INSERT INTO mp3_search(`search_txt`, `search_data`, `search_datal`, `search_ile`, `search_datarss`) VALUES ('szukany tytul', '".date("Y.m.d H:i")."', '".date("Y.m.d H:i")."', '1', '".date("D, d M Y G:i:s")." +0000')


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 20.08.2025 - 10:36