Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytań
sebekzosw
post
Post #1





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Mam tabelę, w której znajduje się ponad 2.500.000 rekordów.

jeżeli wykonuje zapytanie sprawdzające źródła odwiedzin:

  1. SELECT `domain`, COUNT(`id`) AS `count` FROM `all_cms_entry` GROUP BY `domain` ORDER BY `count` DESC


to trochę długo się wykonuje:

Pokaż wiersze 0 - 3 ( 4 wszystkich, Wykonanie zapytania trwało 8.5397 sekund(y))

Oto moja struktura bazy danych:
  1. CREATE TABLE IF NOT EXISTS `all_cms_entry` (
  2. `id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `page` varchar(50) COLLATE utf8_polish_ci DEFAULT NULL,
  4. `back` enum('0','1') COLLATE utf8_polish_ci DEFAULT '0',
  5. `domain` varchar(70) COLLATE utf8_polish_ci DEFAULT NULL,
  6. `referer` varchar(100) COLLATE utf8_polish_ci DEFAULT NULL,
  7. `browser` varchar(30) COLLATE utf8_polish_ci DEFAULT NULL,
  8. `platform` varchar(20) COLLATE utf8_polish_ci DEFAULT NULL,
  9. `keyword` varchar(60) COLLATE utf8_polish_ci DEFAULT NULL,
  10. `ip` int(10) UNSIGNED DEFAULT NULL,
  11. `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  12. PRIMARY KEY (`id`),
  13. KEY `page` (`page`,`back`,`domain`,`browser`, `platform`, `keyword`,`ip`),
  14. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2621940 ;


Da się to jakoś przyśpieszyć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
BaN
post
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


Jest źle, baza nie korzysta z indeksu, zamień COUNT(`id`) na COUNT(*) i zobacz EXPLAIN, powinna skorzystać z indeksu. Jeśli dalej nie, to wykonaj polecenie
  1. CHECK TABLE `all_cms_entry`
I jeszcze raz EXPLAIN. EXPLAIN powinien pokazać korzystanie z indeksu, dodatkowo pewnie dalej będzie tworzenie tabeli tymczasowej i filesort, bo masz sortowanie, ale powinno być szybkie jeśli założy tabelę w pamięci, a nie na dysku. Dużo jest tych unikalnych domen?
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: 14.10.2025 - 01:00