【问题标题】:Android-Firebase Database query working very slowlyAndroid-Firebase 数据库查询工作非常缓慢
【发布时间】:2018-09-11 23:27:15
【问题描述】:

我从数据库中查询数据的性能非常低。我有超过 200 个用户节点。每个节点都有一个arraylist。我想检查特定用户节点下可用的子节点数。这是我编写的代码。

private DatabaseReference root,IdUser;
root = FirebaseDatabase.getInstance().getReference("ContactList");
IdUser = root.child(userId);
try {

        IdUser.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                int count = (int) dataSnapshot.getChildrenCount();
                tv_count.setText(String.valueOf(count));
                if (count>amount){
                    button.setText("Get Data");
                    button.setEnabled(true);
                }else if (count<amount){
                    button.setText("Sync Data");
                    button.setEnabled(true);
                }else {
                    button.setText("Sync Data");
                    button.setEnabled(true);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }catch (Exception e){
        e.printStackTrace();
    }

现在的问题是,计算孩子数需要 1 多分钟。请建议我可以对我的代码进行的任何改进以提高查询性能。提前致谢。

【问题讨论】:

    标签: java android firebase android-studio firebase-realtime-database


    【解决方案1】:

    这在很大程度上取决于您在/ContactList/$uid 下为该用户拥有多少数据,以及您在设备上检索数据的带宽。

    根据定义,这将比必要的要慢,因为您正在检索实际联系人,而不仅仅是计数。

    考虑在每次更新该用户的联系人列表时更新的数据库中某处为每个用户保留一个单独的contactCount 值。虽然在更新数据时这需要更多代码,但现在只读取他的计数变得轻而易举。

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 2017-02-07
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      相关资源
      最近更新 更多