Swift 4,
Я создал простую перечисление со связанными значениями для обработки опорных путей базы данных базы данных firebase
import Firebase
enum FirebaseDBConstants {
case UserLocation(database : DatabaseReference, userID :String)
case UserRequest(database : DatabaseReference, requestID :String)
func getDBPath() -> DatabaseReference {
switch self {
case .UserLocation(let database,let userID):
return database.root.child(FirebaseDBEnvironmentEnum.getCurrentEnvioronMent()).child("Location").child(userID).child("JSON")
case .UserRequest(let database,let requestID):
return database.root.child(FirebaseDBEnvironmentEnum.getCurrentEnvioronMent()).child("Request").child(requestID)
default:
break
}
}
}
Используйте ее, как показано на рисунке
//Pass Database refenence root as parameter with your request id
let dbPath = FirebaseDBConstants.UserRequest(database: database, requestID: requestId).getDBPath()
В вашем описании представлены четыре индекса:
top_id, idn_id
top_id, rsc_id
или rcs_id, top_id
top_id, act_id
или act_id, top_id
top_id, tup_id
или tup_id, top_id
Это независимо от базы данных. Oracle реализует что-то, называемое «skip-scan» для индексов. Это позволит вам уменьшить количество индексов.
Действительно ли эти индексы действительно нужны, действительно зависит от того, насколько избирателен top_id
. Если имеется только несколько совпадений, тогда необязательный ключ с индексом в секунду может не понадобиться.