Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie toplisty, czy dobre?
Forum PHP.pl > Forum > Bazy danych > MySQL
cycofiasz
Witam, mam tabelę 'mp3', gdzie są pola: id, tytul, dodano, wyswietlen

Chciałbym teraz zrobić taką toplistę 5 najbardziej popularnych utworów, ale nie opierającą się wyłącznie na liczbie wyswietlen, tylko na liczbie wyświetleń na dzień. Skonstruowałem takie zapytanie:

  1. SELECT `id` ,`dodano`,`tytul`
  2. FROM `mp3` ORDER BY (`wyswietlen` / ( (UNIX_TIMESTAMP( ) - `dodano` ) /86400)) DESC LIMIT 0, 5


Działa dobrze,ale nie jestem pewien czy zrobiłem to w najlepszy sposób, bo od niedawna dopiero zajmuję się bazami. Nie wiem również jak takie zapytanie będzie się sprawowało przy duużej liczbie rekordów.

Ma ktoś jakieś sugestie?
kefirek
Lepiej chyba tak
  1. SELECT * FROM mp3 WHERE DATE(FROM_UNIXTIME(dodano)) = CURDATE() ORDER BY wyswietlen DESC 5
cycofiasz
Nie, nie , nie. Twoje zapytanie działa inaczej, ja proszę by ktoś mi określił czy moje zapytanie jest ok, i czy nie da się łatwiej.

Twoje zapytanie zwraca top 5 postów z dzisiaj, a ja chcę ogólnie...
SzamanGN
A co powiesz na to:
  1. SELECT (`wyswietlen`/(TO_DAYS(CURDATE())-TO_DAYS(`dodano`))) AS ilosc_wyswietlen FROM `mp3` ORDER BY ilosc_wyswietlen DESC


Daje wynik w polu: ilosc_wyswietlen
cycofiasz
W sumie zapytanie zaproponowane przez ciebie nie różni się zbytnio od mojego, liczy to samo.

Pytanie moje jednak jest nadal aktualne: czy takie coś jest wydajne przy dużej ilości rekordów? Bo w zapytaniu za każdym razem jest liczony ten współczynnik oglądalności i dopiero potem wybieranych jest 5 rekordów z najwyższą wartością... czyli liczy chyba wszystkie rekordy....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.