Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wolny LEFT JOIN
redman2
post 23.07.2007, 13:43:14
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 13.10.2004

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


Musze koniecznie uzyc LEFT JOIN, dlatego, ze musze wyswietlac rowniez wartosci NULL i je pogrupowac.

Mam dwie tabele, jedna skaladajaca sie (do tej pory) z okolo 50000 rekordow, struktura:

  1. CREATE TABLE `email_confirm` (
  2. `id` int(3) NOT NULL AUTO_INCREMENT,
  3. `no` varchar(100) NOT NULL,
  4. `email` varchar(100) NOT NULL',
  5. `date` datetime NOT NULL,
  6. `ver` varchar(6) NOT NULL,
  7. PRIMARY KEY (`id`),
  8. KEY `no` (`no`),
  9. KEY `email` (`email`)
  10. ) ENGINE=MyISAM;


A tu druga tabela, zawierajaca kilkanascie rekordow, w ktorej wpisuje ile maili zostalo wyslanych:

  1. CREATE TABLE `email_confirm_sent` (
  2. `id` int(3) NOT NULL AUTO_INCREMENT,
  3. `no` varchar(100) NOT NULL,
  4. `quantity` int(10) NOT NULL,
  5. PRIMARY KEY (`id`),
  6. KEY `no` (`no`),
  7. KEY `quantity` (`quantity`)
  8. ) ENGINE=MyISAM;



I teraz zapytanie, ktore grupuje wszystkie wyslane maile, laczy sie z druga tabela i na tej podstawie moge wylicz procent otwarte/wyslane:

  1. SELECT email_confirm.no, COUNT(email_confirm.no) AS counts, quantity
  2. FROM email_confirm LEFT JOIN email_confirm_sent
  3. ON email_confirm.no = email_confirm_sent.no
  4. WHERE email NOT LIKE '%spa.pl'
  5. GROUP BY email_confirm.no HAVING counts > 10


I problem w tym, ze ten kochany LEFT JOIN opoznia generacje wynikow do okolo 40sek.

Mozna to jakos zoptymalizowac?

Ten post edytował redman2 23.07.2007, 13:44:57
Go to the top of the page
+Quote Post

Posty w temacie


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: 23.06.2025 - 17:15