Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytania
Kryszic
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 17.10.2006

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


Witam

mam następujący problem:

  1. # Query_time: 1.504482 Lock_time: 0.000034 Rows_sent: 5
  2. Rows_examined: 263845 SET timestamp=1370253373;
  3.  
  4. SELECT a.id, a.tytul, p.post_text FROM
  5. artykuly a,
  6. minibbtable_posts p
  7. WHERE a.topicId=p.topic_id ORDER BY p.post_id
  8. DESC LIMIT 5;
  9.  


Jak można zoptymalizowac takei zapytanie? z Góry dzięki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




dodać indeksy na pola...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Kryszic
post
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 17.10.2006

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


a możesz pokazać mi na przykąłdzie lub powiedzieć o co chodzi dzieki
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Zrób dla obu tabel:

  1. SHOW CREATE TABLE [NAZWA_TABELI];


i pokaż wynik


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Kryszic
post
Post #5





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 17.10.2006

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


  1. CREATE TABLE `minibbtable_posts` (
  2. `post_id` int(10) NOT NULL AUTO_INCREMENT,
  3. `forum_id` int(10) NOT NULL DEFAULT '1',
  4. `topic_id` int(10) NOT NULL DEFAULT '1',
  5. `poster_id` int(10) NOT NULL DEFAULT '0',
  6. `poster_name` varchar(255) NOT NULL DEFAULT 'Anonymous',
  7. `post_text` text NOT NULL,
  8. `post_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  9. `poster_ip` varchar(15) NOT NULL DEFAULT '',
  10. `post_status` tinyint(1) NOT NULL DEFAULT '0',
  11. `moderacja` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
  12. `widoczny` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
  13. PRIMARY KEY (`post_id`),
  14. KEY `forum_id` (`forum_id`),
  15. KEY `topic_id` (`topic_id`),
  16. KEY `poster_id` (`poster_id`),
  17. KEY `poster_ip` (`poster_ip`)
  18. ) ENGINE=MyISAM AUTO_INCREMENT=134302 DEFAULT CHARSET=latin2


  1. CREATE TABLE `artykuly` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `tytul` varchar(200) DEFAULT NULL,
  4. `skrot` text,
  5. `tresc` text,
  6. `dataDodania` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  7. `dataModyfikacji` datetime NOT NULL,
  8. `publikacjaOd` datetime DEFAULT NULL,
  9. `godzina_od` time NOT NULL,
  10. `publikacjaDo` date DEFAULT NULL,
  11. `fotoId` int(10) DEFAULT NULL,
  12. `autor` varchar(200) DEFAULT NULL,
  13. `zrodlo` varchar(100) DEFAULT NULL,
  14. `ukryty` tinyint(1) UNSIGNED NOT NULL COMMENT '1 - ukryty',
  15. `status` tinyint(1) DEFAULT '1',
  16. `archiwum` tinyint(1) DEFAULT '0' COMMENT '1 - w archiwum',
  17. `aktualnosci` enum('brak','kopiawaktualnosciach') NOT NULL DEFAULT 'brak',
  18. `kalendarz` enum('brak','kopiawkalendarzu') NOT NULL DEFAULT 'brak',
  19. `topicId` int(10) UNSIGNED DEFAULT NULL,
  20. `wyswietlOpinie` tinyint(1) NOT NULL DEFAULT '1',
  21. `blokujOpinie` tinyint(1) NOT NULL DEFAULT '0',
  22. `icon` varchar(255) DEFAULT NULL,
  23. `rotator` tinyint(1) NOT NULL,
  24. `impreza` tinyint(1) NOT NULL,
  25. `ile` int(6) NOT NULL,
  26. `idgal` int(6) NOT NULL,
  27. `id_kat` int(6) NOT NULL,
  28. `kat_news` int(6) NOT NULL,
  29. `film` longtext NOT NULL,
  30. `mini` varchar(255) NOT NULL,
  31. `rodzaj` int(6) NOT NULL,
  32. `news` int(6) NOT NULL,
  33. PRIMARY KEY (`id`)
  34. ) ENGINE=MyISAM AUTO_INCREMENT=33222 DEFAULT CHARSET=utf8
Go to the top of the page
+Quote Post
markonix
post
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Unormuj te nazwy kolumn.. Raz polskie, raz angielskie; raz podkreślnik, raz camelCase... Fe.


--------------------
Go to the top of the page
+Quote Post
bpskiba
post
Post #7





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


1 uruchomić OPTIMIZE TABLE....
2 zmienić silnik na innoDB w obu tabelach
3 ustawić identyczny typ danych na polach a.topicId oraz p.topic_id (unsigned to istotna różnica)
4 założyć indexy na tych polach (brak w artykułach)

po wszystkim wykonać EXPLAIN ..... podać wynik i sprawdzić czy jest różnica
Go to the top of the page
+Quote Post

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 - 21:05