JavaScriptからのクエリで使用したすべてのorderByChild
について、Firebaseから次の警告メッセージが表示されます。
FIREBASE警告:不特定のインデックスを使用しています。パフォーマンスを向上させるために、/ tablesの ".indexOn": ""をセキュリティルールに追加することを検討してください
これまでのところ、クエリは非常に高速に実行されたため、indexOn
を含める必要はないと思います。負の影響は何だと思いますか?
また、デバッグ中に警告が非常にイライラするので、どのように警告を実際に無効にしますか。
開発段階にいる場合、違いを感じることはありません。ただし、データが大きくなると、インデックス作成によりクエリを高速化できます。
インデックス作成の利点について詳しく知るには、これをお読みください。 https://firebase.google.com/docs/database/security/indexing-data
警告を無効にすることを知っている限り、firebaseソースコードを編集する必要があります。 コンソールへのすべてのfirebaseロギングを無効にする方法はありますか?
他の人が言ったように:インデックスを定義しない場合、すべてのフィルタリングはクライアント側で行われます。これは最初の開発ではおそらく問題ありませんが、データを追加するにつれて無駄になります。
問題を修正するには、Firebase Databaseルールで正しいインデックスを定義します。 プロジェクトのFirebaseコンソールのデータベースパネル でルールを変更できます。 Firebaseドキュメントの データインデックスの定義 をご覧ください。
インデックス作成によって何が変わったのかを観察する方法はありますか?
Firebaseは、データの順序付けとクエリのための強力なツールを提供します。インデックスを作成すると、クエリのパフォーマンスが向上します。 dinosaur
というテーブルに次のようなデータがあると考えてください。
{
"lambeosaurus": {
"height" : 2.1,
"length" : 12.5,
"weight": 5000
},
"stegosaurus": {
"height" : 4,
"length" : 9,
"weight" : 2500
}
}
恐竜の身長と長さを(検索して)並べる必要がありますが、重量ではありません。したがって、次のようなdinosaur
テーブルのルールを設定する必要があります。
"rules": {
"dinosaurs": {
".indexOn": ["height", "length"]
}
}
Firebaseにこの情報を伝えることにより、Firebaseはこの.indexOn
高さと長さのクエリを最適化します。その後、データをクエリするためのFirebaseセキュリティを維持し、クエリのパフォーマンスも改善しました。