MySQL - co zamiast COUNT
Darek - 16-11-2006 00:22
MySQL - co zamiast COUNT
Witam, dzis od mojego providera dostalem info, ze niktore zapytania SQL zbyt obciazaja baze, m.in jest takie zapytanie:
SELECT count(id) AS ile FROM tab_ WHERE czy_zablokowane = 0;
id (INT)- klucz glowny, czy_zablokowane (INT) - index
tabela aktualnie ma ok 5000 rekordow
prosze o podpowiedz co w tym zapytaniu jest nie tak, ze wg providera przeciaza serwer?
Pozdr. D.
Grzegorz Danowski - 16-11-2006 00:22
Użytkownik "Darek" <dszymanski@autograf.pl> napisał w wiadomości news:ejejdp$2g9$1@news.onet.pl... > Witam, > dzis od mojego providera dostalem info, ze niktore zapytania SQL zbyt > obciazaja baze, m.in jest takie zapytanie: > > SELECT count(id) AS ile FROM tab_ WHERE czy_zablokowane = 0; > > id (INT)- klucz glowny, > czy_zablokowane (INT) - index > > tabela aktualnie ma ok 5000 rekordow > > prosze o podpowiedz co w tym zapytaniu jest nie tak, ze wg providera > przeciaza serwer?
Skoro taka operacja na tak małej tabelce zabija system, to może warto pomyśleć o zmianie providera? A może to sprawdzanie wykonujesz non stop? Grzegorz
Maciek Dobrzanski - 16-11-2006 00:22
> dzis od mojego providera dostalem info, ze niktore zapytania SQL zbyt > obciazaja baze, m.in jest takie zapytanie:
Może wyłapują zapytania nie korzystające z indeksów, które powtarzają się nazbyt często. To co podałeś ma spore szanse takim być z uwagi na potencjalnie niską selektywność klucza(`czy_zablokowane`).
Maciek
herakles - 16-11-2006 00:22
Darek wrote:
> Witam, > dzis od mojego providera dostalem info, ze niktore zapytania SQL zbyt > obciazaja baze, m.in jest takie zapytanie: > > SELECT count(id) AS ile FROM tab_ WHERE czy_zablokowane = 0; > > id (INT)- klucz glowny, > czy_zablokowane (INT) - index > > tabela aktualnie ma ok 5000 rekordow > > prosze o podpowiedz co w tym zapytaniu jest nie tak, ze wg providera > przeciaza serwer? > > Pozdr. > D.
1) Niech zgadnę, home badziew? 2) Na id podejrzewam jest primary key. Zrób explaina potem załóż index na polu czy_zablokowane i jeszcze raz zrób explaina.
Artur Muszynski - 16-11-2006 00:22
herakles wrote: >> SELECT count(id) AS ile FROM tab_ WHERE czy_zablokowane = 0; > 1) Niech zgadnę, home badziew?
W czym winne home, że robi statystyki długo trwających zapytań? Wszyscy admini ostrzegają klientów w takich sytuacjach, a jak nie pomoże, to dla dobra ogółu nawet zrywają umowę.
> Zrób explaina potem załóż index na polu czy_zablokowane i jeszcze raz > zrób explaina.
Raczej bym poszedł tropem Maćka - najprawdopodobniej indeks na czy_zablokowane i tak zostanie olany. Prędzej eksperymentowałbym z indeksem typu (czy_zablokowane,id), ale najlepiej osobna tabela (zablokowane (id)).
artur
herakles - 16-11-2006 00:23
Artur Muszynski wrote:
> herakles wrote: >>> SELECT count(id) AS ile FROM tab_ WHERE czy_zablokowane = 0; >> 1) Niech zgadnę, home badziew? > > W czym winne home, że robi statystyki długo trwających zapytań? Wszyscy > admini ostrzegają klientów w takich sytuacjach, a jak nie pomoże, to dla > dobra ogółu nawet zrywają umowę. W tym, że upychają setki serwisów na jednej maszynce i to nadaje się tylko do statycznych zabawek. Problemu z countem na 5000 rekordów bez indeksów to nie miałem na PII. Fakt trzeba se robić takie statsy, ale 503 to zdeczka przesada. Tam maszynki są tak przeciążone, że usmażysz na nich jajecznice!
> >> Zrób explaina potem załóż index na polu czy_zablokowane i jeszcze raz >> zrób explaina. > > Raczej bym poszedł tropem Maćka - najprawdopodobniej indeks na > czy_zablokowane i tak zostanie olany. Prędzej eksperymentowałbym z > indeksem typu (czy_zablokowane,id), ale najlepiej osobna tabela > (zablokowane (id)). > > artur
Explain Ci odpowie.
herakles - 16-11-2006 00:23
Grzegorz Danowski wrote:
> Użytkownik "Darek" <dszymanski@autograf.pl> napisał w wiadomości > news:ejejdp$2g9$1@news.onet.pl... >> Witam, >> dzis od mojego providera dostalem info, ze niktore zapytania SQL zbyt >> obciazaja baze, m.in jest takie zapytanie: >> >> SELECT count(id) AS ile FROM tab_ WHERE czy_zablokowane = 0; >> >> id (INT)- klucz glowny, >> czy_zablokowane (INT) - index >> >> tabela aktualnie ma ok 5000 rekordow >> >> prosze o podpowiedz co w tym zapytaniu jest nie tak, ze wg providera >> przeciaza serwer? > > Skoro taka operacja na tak małej tabelce zabija system, to może warto > pomyśleć o zmianie providera? A może to sprawdzanie wykonujesz non stop? > Grzegorz
Otóż właśnie.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?=
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
[mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?=
[MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?=
[MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?=
Gdzie MySQL 4.1, a gdzie 5.0?
[MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?=
[MS SQL] "set names" (mySQL) w MS SQL
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
zanotowane.pldoc.pisz.plpdf.pisz.plczterowers.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|