Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SELECT COUNT, 2x WHERE?
fiszol
post
Post #1





Grupa: Zarejestrowani
Postów: 453
Pomógł: 16
Dołączył: 25.05.2004
Skąd: Gorzów Wlkp.

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


Mam dwa zapytania:
  1. SELECT COUNT(1) AS loot FROM tblname WHERE uid = xx AND item_id != 0;
  2. SELECT COUNT(1) AS spent FROM tblname WHERE uid = xx AND item_id = 0 AND mod_value < 0

Da się wyjąć te county w jednym zapytaniu?

Ten post edytował fiszol 19.07.2013, 20:59:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
fiszol
post
Post #2





Grupa: Zarejestrowani
Postów: 453
Pomógł: 16
Dołączył: 25.05.2004
Skąd: Gorzów Wlkp.

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


Wsadziłem w pętle, usiadłem ze stoperem i:
Kod
SELECT
    (SELECT COUNT(1) FROM smf_mpc_dkplog
    WHERE real_name = 'Rhage' AND item_id != 0) AS items,
    (SELECT COUNT(1) FROM smf_mpc_dkplog
    WHERE mod_value < 0 AND item_id = 0 AND real_name = 'Rhage') AS spent

launch #1:    0.04595 sec.
launch #2:    0.04603 sec.
launch #3:    0.04557 sec.
launch #4:    0.04691 sec.
launch #5:    0.04758 sec.
launch #6:    0.04713 sec.
launch #7:    0.04742 sec.
launch #8:    0.04653 sec.
launch #9:    0.04657 sec.
launch #10:    0.04807 sec.
total:        0.46775 sec.


SELECT COUNT(CASE WHEN item_id != 0 THEN item_id END) AS loot,
    COUNT(CASE WHEN item_id = 0 AND mod_value < 0 THEN item_id END) AS spent
    FROM smf_mpc_dkplog WHERE real_name = 'Rhage'

launch #1:    0.04780 sec.
launch #2:    0.04636 sec.
launch #3:    0.04799 sec.
launch #4:    0.04681 sec.
launch #5:    0.04723 sec.
launch #6:    0.04555 sec.
launch #7:    0.04630 sec.
launch #8:    0.04750 sec.
launch #9:    0.04891 sec.
launch #10:    0.04553 sec.
total:        0.46997 sec.

Jak na moje oko, drugie zapytanie jest ciut wolniejsze. Różnica zresztą jest taka, że ktoś musiałby mieć atomowe poczucie czasu, żeby to odczuć. Puszczałem po 1000 zapytań w 10 rzutach. Podczas normalnego użytkowania skrypt będzie wykonwał jedno zapytanie na jedno odwołanie strony. Samych odwołań nie będzie dużo (40-paru użytkowników).
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 Aktualny czas: 15.10.2025 - 00:14