Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pomoc z optymalizacją zapytania mysql.
inwob
post 20.11.2011, 02:44:24
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 2.05.2010

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


Witam.

Potrzbuje pomocy z dość długim zapytaniem mysql.
  1. SELECT `p`.`name`,`b`.`browser_sha1` FROM `players` `p` LEFT JOIN `browsers` `b` ON `b`.`account_id` = `p`.`account_id` WHERE `p`.`lastip` = 123 AND `p`.`online` = 1 AND `browser_sha1` IN (SELECT `b`.`browser_sha1` FROM `players` `p` LEFT JOIN `browsers` `b` ON `b`.`account_id` = `p`.`account_id` WHERE `p`.`name` = 'Inwob' ) AND `p`.`name` != 'Inwob' GROUP BY `p`.`name`;


Czas jego wykonania wynosi 0.05 sec co jest za duża wartością.
Dodałem indeksy na account_id ora browser_sha1 ale to nie pomaga.

players - ok. 110000 rekordów
browsers - ok. 10000 rekordów, dziennie przybywa około 1000 nowych.

account_id to int(40)
browser_sha1 to varchar(40)

Co moge zrobić aby przyśpieszyć wykonanie tego zapytania?
Dziękuje i Pozdrawiam.

Ten post edytował inwob 20.11.2011, 02:45:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Adi32
post 20.11.2011, 08:45:11
Post #2





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Pięć setnych sekundy to nie jest tragedia w tym przypadku.
Nie mam pomysłu jak przyśpieszyć to zapytanie ale podejrzewam, że odpalasz je w pętli pobierając po jednym wierszu i może w tym problem? Jeżeli się nie mylę, to być może powinieneś zbudować zapytanie które najpierw pobierze wszystkie potrzebne wiersze?


--------------------
Wolałem języki z rodziny C ale poszedłem na łatwizne...
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 07:57