Node.js 最大cpu使用量大表

Node.js 最大cpu使用量大表,node.js,firebase-realtime-database,google-cloud-functions,firebase-security,firebase-admin,Node.js,Firebase Realtime Database,Google Cloud Functions,Firebase Security,Firebase Admin,我有一个拥有一百万用户的数据库,我想根据他们的观点对他们进行分类。当我尝试对它们进行排序时,即使我使用索引,它也会占用100%的cpu,所有东西都会冻结1分钟。我应该使用多个数据库来解决此问题吗 我不希望查询单独使用所有处理器 我的数据库规则 "userlist": { ".read": true, ".indexOn": ["coin", "fcb_coin","name","rateus","guestid","email"], "$uid": {

我有一个拥有一百万用户的数据库,我想根据他们的观点对他们进行分类。当我尝试对它们进行排序时,即使我使用索引,它也会占用100%的cpu,所有东西都会冻结1分钟。我应该使用多个数据库来解决此问题吗

我不希望查询单独使用所有处理器

我的数据库规则

   "userlist": {
      ".read": true,
      ".indexOn": ["coin", "fcb_coin","name","rateus","guestid","email"],
      "$uid": {
      ".write": "auth.uid==$uid",
      ".read": "true",


      }
    },
我的数据库结构

  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");
 });
exports.createmyrankings=functions.https.onRequest((请求,响应)=>{
var db=admin.database().ref();
db.child(“userlist”).orderByChild(“fcb_coin”).startAt(-999999999999).limitToFirst(50).once('value',(snapshot)=>{
设mycount=1;
snapshot.forEach((userSnap)=>{

if(mycount)寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题说明的问题对其他读者不有用。请参阅:“FirebaseDatabase.DefaultInstance.RootReference.Child。”(“userlist”).OrderByChild(“coin”).StartAt(-9999999999).EndAt(499)这是一个使用100%处理器的简单代码我使用了coin值索引我的代码工作正常,我没有说“我的代码不工作”之类的话"。只是因为我的表太大,所以我的代码运行缓慢。正如我所说的,我需要Firebase的帮助,而不是编码。您可能还应该向我们展示您的数据库结构以及示例内容。还有,您如何在FB规则中定义索引。感谢您提供的其他信息。索引看起来不错,所以我想知道在s上是否确实需要那么多时间服务器加载索引。另一种方法很可能与数据传输有关。您能为我再做两件事吗?1)在调用
一次之前添加
console.log(Date.now())
(“value”
,然后在执行任何其他操作之前在回调中再次显示。然后在问题中显示更新的代码和记录的输出。2)将查询更改为
.limitToFirst(1)
,而不是
50
,再次运行它,然后也显示该查询的日志记录结果。”寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:“FirebaseDatabase.DefaultInstance.RootReference.Child(“userlist”).OrderByChild(“coin”).StartAt”(-99999999).EndAt(499)这是一个使用100%处理器的简单代码我使用了硬币价值索引我的代码工作正常,我没有说“我的代码不工作”。只是因为我的表太大,所以我的代码运行缓慢。正如我所说的,我需要Firebase的帮助,而不是编码。您可能还应该向我们展示您的数据库结构以及示例内容。还有,您如何在FB规则中定义索引。感谢您提供的其他信息。索引看起来不错,所以我想知道在s上是否确实需要那么多时间服务器加载索引。另一种方法很可能与数据传输有关。您能为我再做两件事吗?1)在调用
一次之前添加
console.log(Date.now())
(“value”
,然后在执行任何其他操作之前,再次在回调内部。然后在问题中显示更新的代码和记录的输出。2)将查询更改为
。limitToFirst(1)
,而不是
50
,再次运行它,然后显示该查询的日志记录结果。