Если вся таблица из БД прилетает в браузер, а затем браузер с этим миллионом разбирается - это неправильно.
Браузер шлет запрос, типа "дай мне заметки с такими-то тегами, 50 штук", "дай мне заметки за февраль, 3 страница, 50 штук" и т.п. А сервер разбирается и строит запрос в БД. При нормальном АПИ вы сможете менять структуру данных в БД без необходимости переделывать клиент.
Сейчас, возможно и нет смысла разносить все данные по разным таблицам: категории, теги и пр. На масштабах до миллиона строк нормальная СУБД перелопатит одну таблицу со вполне приличной скоростью, в режиме "приложение для себя" вы вряд ли заметите тормоза. Разнесение данных по отдельным таблицам дает:
а) упрощение управления всем этим (например получить список категорий или список тегов, переименовать тег и т.п.)
б) опыт подобной нормализации БД.
Но в целом, для того чтобы пользоваться подобным приложением в личных целях это необязательно.