Obecnie do każdego zdjęcia, oprócz metadanych przetrzymuje w jednej kolumnie tagi w formie tablicy (varchar[]). Chciałbym dorobić funkcjonalność analogiczna jak w Instagramie, a mianowicie gdy ktoś w aplikacji zacznie wpisywać tag, to powyżej 3 wprowadzonych znaków wyświetla mu się podpowiadanie np. 5 tagów, które są posortowane wg ilości wystąpień we wszystkich zdjęciach wszystkich użytkowników.

Zastanawiam się, czy można założyć jakiś index na kolumnie w bazie, aby wyodrębnić te dane wydajnie, czy jedyną opcją jest po prostu duplikacja danych. Gdy użytkownik dodaje zdjęcie, zobaczyć jakie tagi są użyte i dodać +1 do licznika w tabeli o strukturze nazwa_tagu | count. Wiadomo że to rozwiązanie będzie bardziej wydajne, jednak z drugiej strony jest kłopotliwe przy np. edycji zdjęcia, trzeba sprawdzić jakie tagi zostały dodane, usunięte i odpowiednie preparować licznik.