我有以下代码:
foldersRef.where("ParentID", "==", "1").where("Deleted", "==", false)
ParentID
和Deleted
)是否比单字段索引更好?ParentID
和Deleted
的单个字段索引,Firestore会知道使用复合索引吗?.where()
子句/函数调用的顺序重要吗?答案 0 :(得分:1)
- 此查询的复合索引(索引ParentID和Deleted)是否比单字段索引更好?
如果您使用以下代码行:
foldersRef.where("ParentID", "==", "1").where("Deleted", "==", false)
无需任何排序(升序或降序),就无需创建复合索引。 Firestore将自动创建所需的索引。
- 如果我还有用于ParentID和Deleted的单个单字段索引,Firestore会知道使用复合索引吗?
不。单字段索引也由Fiestore自动创建。因此,无需为单个字段创建任何索引。除此之外,如果您具有按顺序排列的单独的字段索引,这并不意味着您也为这些字段具有复合索引。您需要创建自己。
- 创建复合索引时,字段顺序重要吗?
是的,如果您更改where()
调用的顺序,则还需要相应地创建相应的索引。
- .where()子句/函数调用的顺序重要吗?
就速度而言,只要您创建正确的索引,就不会。
答案 1 :(得分:0)
foldersRef.where("ParentID", "==", "1").where("Deleted", "==", false)
和foldersRef.where("Deleted", "==", false).where("ParentID", "==", "1")
将需要两个不同的复合索引。