Tę grę MoaCube też chętnie kupię, bo o ile Visual Novels to tak średnio (a przynajmniej na PC - na komórce w autobusie kto wie... czemu nie ma jeszcze mobilnych wersji ?), o tyle RPG/rogalik, a zwłaszcza taki szybki - jak najbardziej.
Zapisz sobie w czwartej kolumnie "main category" Będzie szybciej niż subselecty w zapytaniu.
Kategorie to nie są jakieś dane, których masz milion i zajmują 100MB w bazie, więc dorobienie jednej kolumny w niczym nie przeszkadza, a ogólnie jak tworzysz strukturę tabeli to powinna być taka, żeby prędkość pobierania zawsze była priorytetem, a jeśli tabela przewiduje 100-200 wpisów, to i 300 kolumn w niczym nie przeszkadza
Jeżeli kategorie są tylko dwupoziomowe to można na przykład tak:
select * from product where category = 4 or category in (select id from category where parent = 4) order by date