Я пишу алгоритм для сопоставления на основе интересов и местоположения. Предположим, что у меня есть данные пользователей
{
"users": [{
"location": "Delhi, India",
"interests": ["Jogging", "Travelling", "Praying"],
"groups": ["exercise", "travelling", "Praying"]
},
{
"location": "Delhi, India",
"interests": ["Running", "Eating", "Praying"],
"groups": ["exercise", "Eating", "Praying"]
}, {
"location": "Delhi, India",
"interests": ["Shopping"],
"groups": ["Shopping"]
}
]
}
Здесь они user1 и user2 имеют схожие интересы "упражнение" и "моление", а user1 и user3 не имеют схожих интересов.
Чтобы найти похожие интересы, пользователи из базы данных с более чем 10 миллионами пользователей могут повлиять на производительность моей базы данных, если я использую запрос SQL
с предложением where каждый раз при получении запроса от мобильного приложения.
SELECT * FROM users WHERE groups = "exercise" OR groups = "travelling" OR groups = "Praying";
Это проверит каждый профиль, который может повлиять на производительность моего приложения. Я не хочу использовать этот подход, поскольку это не будет работать долго. Какой алгоритм следует использовать для достижения высокой производительности?