Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wydajność zapytania
acztery
post
Post #1





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


witam mam takie zapytanie:

  1. SELECT * ,
  2. (SELECT count(*) FROM stat WHERE stat.D='1' AND DocId=www.Id ) AS a1,
  3. (SELECT count(*) FROM stat WHERE stat.D='2' AND DocId=www.Id ) AS a2,
  4. (SELECT count(*) FROM stat WHERE stat.D='3' AND DocId=www.Id ) AS a3,
  5. (SELECT count(*) FROM stat WHERE stat.D='4' AND DocId=www.Id ) AS a4,
  6. (SELECT count(*) FROM stat WHERE stat.D='5' AND DocId=www.Id ) AS a5,
  7. (SELECT count(*) FROM stat WHERE stat.D='6' AND DocId=www.Id ) AS a6,
  8. (SELECT count(*) FROM stat WHERE stat.D='7' AND DocId=www.Id ) AS a7,
  9. (SELECT count(*) FROM stat WHERE stat.D='8' AND DocId=www.Id ) AS a8,
  10. (SELECT count(*) FROM stat WHERE stat.D='9' AND DocId=www.Id ) AS a9,
  11. (SELECT count(*) FROM stat WHERE stat.D='10' AND DocId=www.Id ) AS a10,
  12. (SELECT count(*) FROM stat WHERE stat.D='11' AND DocId=www.Id ) AS a11,
  13. (SELECT count(*) FROM stat WHERE stat.D='12' AND DocId=www.Id ) AS a12,
  14. (SELECT count(*) FROM stat WHERE stat.D='13' AND DocId=www.Id ) AS a13,
  15. (SELECT count(*) FROM stat WHERE stat.D='14' AND DocId=www.Id ) AS a14,
  16. (SELECT count(*) FROM stat WHERE stat.D='15' AND DocId=www.Id ) AS a15,
  17. (SELECT count(*) FROM stat WHERE stat.D='16' AND DocId=www.Id ) AS a16,
  18. (SELECT count(*) FROM stat WHERE stat.D='17' AND DocId=www.Id ) AS a17,
  19. (SELECT count(*) FROM stat WHERE stat.D='18' AND DocId=www.Id ) AS a18,
  20. (SELECT count(*) FROM stat WHERE stat.D='19' AND DocId=www.Id ) AS a19,
  21. (SELECT count(*) FROM stat WHERE stat.D='20' AND DocId=www.Id ) AS a20,
  22. (SELECT count(*) FROM stat WHERE stat.D='21' AND DocId=www.Id ) AS a21,
  23. (SELECT count(*) FROM stat WHERE stat.D='22' AND DocId=www.Id ) AS a22,
  24. (SELECT count(*) FROM stat WHERE stat.D='23' AND DocId=www.Id ) AS a23,
  25. (SELECT count(*) FROM stat WHERE stat.D='24' AND DocId=www.Id ) AS a24,
  26. (SELECT count(*) FROM stat WHERE stat.D='25' AND DocId=www.Id ) AS a25,
  27. (SELECT count(*) FROM stat WHERE stat.D='26' AND DocId=www.Id ) AS a26,
  28. (SELECT count(*) FROM stat WHERE stat.D='27' AND DocId=www.Id ) AS a27,
  29. (SELECT count(*) FROM stat WHERE stat.D='28' AND DocId=www.Id ) AS a28,
  30. (SELECT count(*) FROM stat WHERE stat.D='29' AND DocId=www.Id ) AS a29,
  31. (SELECT count(*) FROM stat WHERE stat.D='30' AND DocId=www.Id ) AS a30,
  32. (SELECT count(*) FROM stat WHERE stat.D='31' AND DocId=www.Id ) AS a31
  33.  
  34. FROM www GROUP BY www.Id


Ale przy np 40 tys rekordów w bazu stat mam komunikat o braku pamięci. Jak wywołam zapytanie bezpośrednio w phpmyadminie jest. może ktoś ma jakiś pomysł. Indexy są
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
acztery
post
Post #2





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


mam 2 tabele

1 to www gdzie są strony www
2 to stat gdzie sa statystyki

pole D to dzień miesiąca

i teraz chce wyswetlic liste wszystkich stron i policzyc ile bylo odwiedzin dla kazdej strony ( a1,a2, i tak analogicznie )

struktura

Kod
CREATE TABLE `stat` (
  `Id` int(10) NOT NULL auto_increment,
  `DocId` int(10) NOT NULL,
  `Act` enum('N','Y') collate utf8_unicode_ci NOT NULL,
  `UserId` int(6) NOT NULL,
  `Typ` enum('A','S') collate utf8_unicode_ci NOT NULL,
  `Ip` varchar(30) collate utf8_unicode_ci NOT NULL,
  `Red` varchar(200) collate utf8_unicode_ci NOT NULL,
  `Date` varchar(200) collate utf8_unicode_ci NOT NULL,
  `Time` int(15) NOT NULL,
  `M` int(2) NOT NULL,
  `W` int(2) NOT NULL,
  `D` int(2) NOT NULL,
  PRIMARY KEY  (`Id`),
  KEY `D` (`D`),
  KEY `Typ` (`Typ`),
  KEY `DocId` (`DocId`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13002;

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

--
-- Struktura tabeli dla  `www`
--

CREATE TABLE `www` (
  `Id` int(10) NOT NULL auto_increment,
  `CatId` int(10) NOT NULL,
  `UserId` int(10) NOT NULL,
  `Date` varchar(180) NOT NULL,
  `Act` enum('N','Y') NOT NULL,
  `Adult` enum('N','Y') NOT NULL,
  `Title` varchar(250) character set utf8 collate utf8_polish_ci NOT NULL,
  `Desc` text character set utf8 collate utf8_polish_ci NOT NULL,
  `http` varchar(250) character set ucs2 collate ucs2_polish_ci NOT NULL,
  `Typ` enum('W','Z','N') NOT NULL,
  `Img1` varchar(200) NOT NULL,
  PRIMARY KEY  (`Id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=34;


Ten post edytował acztery 30.09.2008, 15:32:30
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 16:53