Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pomoc w optymalizacji zapytania
wojtaas_pl
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.07.2013

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


Witam.

Mam taką tabele:

  1. +--+-------+------------------+---------------------+
  2. |id|ip |referer |time |
  3. +--+-------+------------------+---------------------+
  4. |1 |1.2.3.4 |http://google.pl/ |1970-01-01 00:00:00|
  5. +--+-------+------------------+---------------------+
  6. |2 |3.2.1.2 |http://bing.com/ |1971-02-01 00:10:00|
  7. +--+-------+------------------+---------------------+
  8. itd.


ogólnie jakieś tam statystyki z zapisem z jakiego IP jaki referer i kiedy.
Potrzebuję wyświetlić 20 ostatnich unikalnych (tak aby w wyniku nie powtarzały się adresy) wejść, plus dodać falagę ze w referer zawiera słowo %msg%.

Mam taki kod, który działa ale przy ok 10tyś. rekordów już zamula. Czy można go zoptymalizować:

  1. SELECT id, ip AS wyip, ile, referer, time, (
  2.  
  3. CASE WHEN (
  4. (
  5.  
  6. SELECT COUNT( ip )
  7. FROM `stats`
  8. WHERE wyip = ip
  9. AND referer LIKE '%msg%'
  10. ) >0
  11. )
  12. THEN '1'
  13. ELSE '0'
  14. END
  15. ) AS msg
  16. FROM (
  17.  
  18. SELECT IP AS UNIQIP, COUNT( IP ) AS ILE
  19. FROM `stats`
  20. GROUP BY IP
  21. )T2, (
  22.  
  23. SELECT id, time, ip, referer
  24. FROM (
  25.  
  26. SELECT MAX( time ) AS time, MAX( id ) AS id, ip, referer
  27. FROM `stats`
  28. GROUP BY ip
  29. ORDER BY id DESC
  30. ) AS `stats`
  31. LEFT JOIN `stats`
  32. USING ( id, time, ip, referer)
  33. )T
  34. WHERE IP = UNIQIP
  35. ORDER BY ID DESC
  36. LIMIT 0 , 20
  37.  
  38.  


Dziękuje za odpowiedzi:)
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: 23.12.2025 - 16:14