Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 3 Dołączył: 23.02.2006 Ostrzeżenie: (0%)
|
Chcę zrobić bazę utworów które są grane w radio internetowym, z której później będę mógł pobrać informację o tym co było grane z wyszczególnieniem data_godzina|wykonawca|utwór, np. z podziałem na dni, pobrać utwory według wykonawcy, pobrać informację o tym ile razy dany utwór był zagrany. Na obecnym etapie chcę skupić się nad optymalną strukturą bazy danych, na razie wymyśliłem coś takiego:
Czy tak wyglądająca struktura bazy jest według Was w porządku, czy można by jeszcze ją bardziej zoptymalizować, coś odjąć, dodać? W jaki sposób mając dane w postaci zmiennych $utwor, $wykonawca, $data najbardziej optymalnie wykonać takie zadanie: Dodać zawartość zmiennej $wykonawca do tabeli 'Wykonawca' (tylko jeśli jej nie ma w tabeli), następnie z tabeli 'wykonawca' pobrać pole WykonawcaID dla rekordu zgodnego ze zmienną $wykonawca, i dodać pobraną wartość WykonawcaID i zmiennej $wykonawca do tabeli 'utwory' (tylko jeśli tego zestawu nie ma jeszcze). Na końcu pobrać z tabeli 'utwory' UtworID dla zestawu "WykonawcaID i $utwor", i wrzucić go do tabeli 'Tracklista', razem ze zmienną $data Do powyższego zadania widzę konieczność wykonania conajmniej 5 zapytań na jeden utwór:
Biorąc pod uwagę że każde wywołanie skryptu który będzie uruchamiany cronem, to próba dodania w pętli 20 rekordów, robi się już 100 zapytań na jedno wywołanie skryptu, więc wydaje mi się to trochę nieoptymalne, nie wiem czy dobrze myślę, ale wydaje mi się że mogę wyeliminować oddzielne zapytania select wrzucając je od razu do zapytań insert, ale nie wiem czy to już najbardziej optymalne rozwiązanie? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%)
|
Dobrze robisz, po prostu rekord nie został dodany (INSERT IGNORE) dlatego zwróciło 0.
Zapisuj sobie w tablicy ID już dodanych rekordów i dane tak aby kolejne zapytania mogły być sprawdzane w tablicy. Jak nie ma to Insert, a jak jest to weź ID z tablicy. To zredukuje ilość zapytań o ten sam rekord |
|
|
|
@rtur [MySQL] Struktura bazy danych dla bazy utworów 3.07.2014, 07:03:31
Pyton_000 100 zapytań nieoptymalne? Ja w podobny sposób musi... 3.07.2014, 07:08:41
mmmmmmm SELECT możesz połączyć z INSERT IGNORE w jedno zap... 3.07.2014, 07:59:51
@rtur Wydawało mi się to mało optymalne, ale faktycznie ... 3.07.2014, 08:37:41
mmmmmmm $sqlQuery1 = "insert ignore into `Wy... 3.07.2014, 09:38:00 
@rtur Cytat(mmmmmmm @ 3.07.2014, 10:38:00 )... 3.07.2014, 11:20:08
@rtur Musiałem temat porzucić na chwile, ale już do nieg... 1.08.2014, 21:39:22 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 17:05 |