У меня есть база данных с 1 миллионом пользователей, и я хочу отсортировать их по их баллам. Когда я пытаюсь отсортировать их, даже если я использую индекс, он использует 100% процессора и все зависает на 1 минуту. Нужно ли использовать несколько баз данных для решения этой проблемы?
Я не хочу, чтобы запрос использовал все процессоры в одиночку?
мои правила базы данных.
"userlist": {
".read": true,
".indexOn": ["coin", "fcb_coin","name","rateus","guestid","email"],
"$uid": {
".write": "auth.uid==$uid",
".read": "true",
}
},
my структура базы данных
userlist:
uid:
name:
email:
fcb_coin:
device_type
facebookid:
deviceid:
моя облачная функция Firebase
exports.createmyrankings = functions.https.onRequest((request, response) => {
var db = admin.database().ref();
db.child("userlist").orderByChild('fcb_coin').startAt(-999999999999).limitToFirst(50).once('value', (snapshot) => {
let mycount=1;
snapshot.forEach((userSnap) => {
if(mycount<=50){
snapshot.ref.parent.child('worldtop').child(mycount).remove();
snapshot.ref.parent.child('worldtop').child(mycount).child(userSnap.child('fcb_ids').val()).child('coin').set(userSnap.child('coin').val());
snapshot.ref.parent.child('worldtop').child(mycount).child(userSnap.child('fcb_ids').val()).child('name').set(userSnap.child('name').val());
snapshot.ref.parent.child('worldtop').child(mycount).child(userSnap.child('fcb_ids').val()).child('fcb_ids').set(userSnap.child('fcb_ids').val());
mycount=mycount+1;
}
});
});
response.send("ranking Is created");
});