Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%)
|
Witam,
Pracuję nad pewnym serwisem internetowym (niestety nie wolno mi podawać nazwy ani adresu), który zaczyna już dość mocno zwalniać. W chwili obecnej problem stanowią dwie tabele: - tabela produktów - MyISAM, ponad 700 tyś rekordów, ponad 180 MB. - tabela ofert do produktów - MyISAM, ponad 1 125 000 rekordów, ponad 230 MB. Do rzeczy - problem stanowi już samo przeglądanie produktów.
Cytat 20 rows in set (9.70 sec) Bez SQL_CALC_FOUND_ROWS: Cytat 20 rows in set (6.63 sec) To samo zapytanie, ale bez wyciągania danych - zamiast tego COUNT(*): Cytat 20 rows in set (6.71 sec) Teraz wracając do początku: Bez "`u`.`aktywny`=1": Cytat 20 rows in set (1.86 sec) Bez "`u`.`aktywny`=1" oraz bez "ORDER BY `p`.`name` ASC": Cytat 20 rows in set (1.16 sec) Bez "`u`.`aktywny`=1" oraz bez "`o`.`cena` BETWEEN 1 AND 99999" oraz bez "ORDER BY `p`.`name` ASC": Cytat 20 rows in set (1.07 sec) Ostatnie zapytanie, ale bez SQL_CALC_FOUND_ROWS: Cytat 20 rows in set (0.00 sec) Serwis stoi na serwerze dedykowanym... Jak przyspieszyć to zapytanie? Nie mogę zrezygnować z tych warunków WHERE, ale może da radę jakoś inaczej zapytanie skonstruować? Przejście na InnoDB pomoże czy rozwiązania trzeba szukać gdzie indziej? |
|
|
|
Walian Powolne przeglądanie produktów 17.08.2010, 11:01:14
erix A nie możesz po prostu wywołać dwóch zapytań? Jedn... 17.08.2010, 11:11:48
nospor zrob z tego zapytania EXPLAIN i zobacz na czym mul... 17.08.2010, 11:12:02
Walian Cytat("erix")A nie możesz po prostu wywo... 17.08.2010, 11:27:08
erix Huh, nie zauważyłem...
Pokaż lepiej
[SQL] pobier... 17.08.2010, 11:28:54
Walian Ale jak niby taki cache zrobić? Nie widzę tu sensu... 17.08.2010, 11:39:50
erix CytatWyciąłem kolumny, które nie biorą udziału w z... 17.08.2010, 11:56:52
wookieb Daj całe create table (nie usuwaj "zbędnych... 17.08.2010, 12:01:59
Walian Gdybym projektował ten serwis od początku to tak w... 17.08.2010, 12:08:13
kaminskp Sugeruję zastosowanie AJAX on szybko dłubie w dany... 17.08.2010, 12:11:49
erix CytatNie ma to żadnego znaczenia w tym zapytaniu
C... 17.08.2010, 12:13:02
Walian [SQL] pobierz, plaintext CREATE TABLE `produkty` ... 17.08.2010, 12:17:04
wookieb Cytat(kaminskp @ 17.08.2010, 13:11:49... 17.08.2010, 12:19:10
erix Na próbę - przenieś kolumny varchar/text (tyle, il... 17.08.2010, 12:23:43
wookieb Niestety MyIsam słabo spisuje się w operacjach złą... 17.08.2010, 12:39:31
Walian Stworzyłem nawet nieco mniejszą tabelkę dla testu:... 17.08.2010, 12:41:42
dr_bonzo Hmm, indeksy na kolumnach zlaczen są.
Robisz LEFT... 17.08.2010, 13:10:57
Walian Nie kumam - jeśli nie LEFT JOIN to co?
Cytatbo jes... 17.08.2010, 13:44:53
VegetaSSJ a wiedziałeś o tym że:
[SQL] pobierz, plaintext `... 17.08.2010, 14:32:31
dr_bonzo CytatNie kumam - jeśli nie LEFT JOIN to co?
To INN... 17.08.2010, 14:37:27
Walian Oczywiście, że wiem o tym, sęk w tym, iż numery ni... 17.08.2010, 14:38:22
mkozak Przy takiej dużej ilości kluczy i kolumn w userach... 17.08.2010, 15:56:57
dr_bonzo @mkozak: Ciekawe, twoje zapytanie daje:
Kodid sel... 17.08.2010, 16:01:54
Walian Cytat("mkozak")Przy takiej dużej ilości ... 17.08.2010, 17:16:31 
mkozak Cytat(Walian @ 17.08.2010, 17:16:31 )... 17.08.2010, 17:29:12
Walian Wprowadziłem nowe zapytanie + nowy indeks i wydaje... 18.08.2010, 11:05:17
mkozak To już zależy od tego jak często zmienia się statu... 18.08.2010, 11:20:15
Walian Status będzie się zmieniał co miesiąc - lub późnie... 18.08.2010, 12:34:35 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 22:34 |