• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sposób na działania matematyczne na tabeli w mysql

VPS Starter Arubacloud
+1 głos
2,967 wizyt
pytanie zadane 30 maja 2015 w PHP przez mowmiheniek Stary wyjadacz (11,900 p.)
edycja 30 maja 2015 przez mowmiheniek
Witam,
Wyobraźcie sobie taką sytuację. Mam w tabeli listę różnych liczb i chcę obliczyć procentowy udział ich w tej tabeli.
Czyli sumować je i na wyniku obliczać procenty. Na  podstawie procentów będą się wykonywały dalsze obliczenia.
Mam teraz 4 możliwości:
1) obliczenia zrobić w php,
2) stworzyć funkcje obliczającą w mysql,
3) utworzyć widok mysql,
4) inny sposób, którego nie znam.

Słyszałem, że funkcje w mysql nie są efektywne i wolne, a poza tym program jest przejrzystszy jak wszystko jest w php. Ale chciałbym znać tez wasze zdanie.

3 odpowiedzi

+1 głos
odpowiedź 31 maja 2015 przez Comandeer Guru (599,730 p.)
wybrane 2 czerwca 2015 przez mowmiheniek
 
Najlepsza

A nie da się tego ogarnąć samym zapytaniem, bez funkcji? SUM COUNT + grupowanie po polu z liczbą?

Trza by do tego porównać które obliczenia są szybsze - w PHP czy od razu w zapytaniu

komentarz 31 maja 2015 przez Comandeer Guru (599,730 p.)

W MySQL przyda się jeszcze EXPLAIN

komentarz 31 maja 2015 przez jeremus Maniak (59,720 p.)
na zachętę dostałes upa do pytania :)
komentarz 1 czerwca 2015 przez mowmiheniek Stary wyjadacz (11,900 p.)

@jeremus, @Comandeer 

The Winner is.... 

0.2733
0.1822
0.0979
0.0979
0.0556
0.0096
0.0560
0.0105
0.1112
0.1057
Czas obliczen w bazie=0


0.27334851936219
0.18223234624146
0.097949886104784
0.097949886104784
0.055580865603645
0.0095671981776765
0.056036446469248
0.010478359908884
0.11116173120729
0.10569476082005

Czas obliczen w php=0

komentarz 1 czerwca 2015 przez Comandeer Guru (599,730 p.)
Skoro różnice są aż tak minimalne przerzuciłbym wszystkie obowiązki na bazę
komentarz 1 czerwca 2015 przez jeremus Maniak (59,720 p.)
brawo, a się migałeś :)

teraz będziesz naszym guru w testowaniu wydajności :)
+1 głos
odpowiedź 30 maja 2015 przez HaKIM Szeryf (87,590 p.)
Nie wiem jak jest poprawnie a tym samym najbardziej efektywnie, ale ja, wybrałbym jedynkę.

Mam dziwne wrażenie że byłoby to najmniej skomplikowane.

Niestety, nie widziałem jak wyglądają funkcje w MySQL. Dlatego  też nie mam jak porównać do tych w PHP.
+1 głos
odpowiedź 31 maja 2015 przez jeremus Maniak (59,720 p.)
1.  "select kol1 from tab1"  - a reszta operacji ( zsumowanie i wyliczenie udziaua ) w php

2   "select sum(kol1) from tab1"  , "select kol1 from tab1" - tylko wyliczenie udzialu w PHP

3. " select 100*kol1/ ( select sum(kol1) from tab1 ) from tab1"  - wszystko w MySqlu policzone

ostatni sposób upraszcza kod php

wybór nalezy do Ciebie :)
komentarz 31 maja 2015 przez mowmiheniek Stary wyjadacz (11,900 p.)
A który według Ciebie powinienem zrobić. Bo w PHP wiem jak zadać pytanie i jak to obliczyć, ale zastanawiałem się czy użycie jednej z pozostałych metod nie jest bardziej praktykowane, np. ze względu na wydajność.
komentarz 31 maja 2015 przez jeremus Maniak (59,720 p.)
ja bym uzył 3-ki

trudno mi ocenic wydajnosc

jeśłi tabela będzie zawierać mniej niz np. 100 000 rec to i tak będzie to błysk

Podobne pytania

0 głosów
1 odpowiedź 608 wizyt
0 głosów
5 odpowiedzi 927 wizyt
0 głosów
0 odpowiedzi 227 wizyt
pytanie zadane 1 listopada 2020 w SQL, bazy danych przez kijank Początkujący (250 p.)

92,453 zapytań

141,262 odpowiedzi

319,086 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...