Thanks @vsr1
That is running returning values now though its still rather slow ~19 seconds,
If i add in a StaffMember to filter it uses the same index and works fast. ~400ms. (See further down)
See Plan for slow return for one department for year::
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "Authorize",
> "#stats": {
> "#phaseSwitches": 3,
> "servTime": "19.9986ms"
> },
> "privileges": {
> "List": [
> {
> "Target": "default:staffjobscores ",
> "Priv": 7
> }
> ]
> },
> "~child": {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "DistinctScan",
> "#stats": {
> "#itemsIn": 61967,
> "#itemsOut": 61967,
> "#phaseSwitches": 247873,
> "execTime": "312.0153ms",
> "kernTime": "16.7818771s"
> },
> "scan": {
> "#operator": "IndexScan3",
> "#stats": {
> "#itemsOut": 61967,
> "#phaseSwitches": 247873,
> "execTime": "396.0237ms",
> "kernTime": "16.3984442s",
> "servTime": "130.4258ms"
> },
> "index": "ixd_CbDojo_2_Departments_DateTimeUtc_StaffMember",
> "index_id": "ae3ccaeb09ba3d62",
> "index_projection": {
> "primary_key": true
> },
> "keyspace": "staffjobscores ",
> "namespace": "default",
> "spans": [
> {
> "exact": true,
> "range": [
> {
> "high": "\"a3598df8-f8fd-41a7-b837-1e7a8e12de1a\"",
> "inclusion": 3,
> "low": "\"a3598df8-f8fd-41a7-b837-1e7a8e12de1a\""
> },
> {
> "high": "\"2019-12-31 23:59:59\"",
> "inclusion": 2,
> "low": "\"2019-01-01 00:00:00\""
> }
> ]
> }
> ],
> "using": "gsi",
> "#time_normal": "00:00.5264",
> "#time_absolute": 0.5264495
> },
> "#time_normal": "00:00.3120",
> "#time_absolute": 0.31201530000000005
> },
> {
> "#operator": "Fetch",
> "#stats": {
> "#itemsIn": 61967,
> "#itemsOut": 61967,
> "#phaseSwitches": 255617,
> "execTime": "502.4534ms",
> "kernTime": "2.884487s",
> "servTime": "13.7829489s"
> },
> "keyspace": "staffjobscores ",
> "namespace": "default",
> "#time_normal": "00:14.2854",
> "#time_absolute": 14.2854023
> },
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "Filter",
> "#stats": {
> "#itemsIn": 61967,
> "#itemsOut": 61967,
> "#phaseSwitches": 247871,
> "execTime": "5.9440434s",
> "kernTime": "11.2268467s"
> },
> "condition": "(((((`staffjobscores `.`Type`) = \"dpm::score\") and (\"2019-01-01 00:00:00\" < (`staffjobscores `.`DateTimeUtc`))) and ((`staffjobscores `.`DateTimeUtc`) <= \"2019-12-31 23:59:59\")) and any `v` in (`staffjobscores `.`Departments`) satisfies (`v` = \"a3598df8-f8fd-41a7-b837-1e7a8e12de1a\") end)",
> "#time_normal": "00:05.9440",
> "#time_absolute": 5.9440434
> },
> {
> "#operator": "InitialProject",
> "#stats": {
> "#itemsIn": 61967,
> "#itemsOut": 61967,
> "#phaseSwitches": 185906,
> "execTime": "11.7987572s",
> "kernTime": "1.0506581s"
> },
> "result_terms": [
> {
> "expr": "(`staffjobscores `.`StaffMember`)"
> },
> {
> "as": "n",
> "expr": "array [(`j`.`Name`), ((ifmissingornull((`j`.`Score`), 0) * ifmissingornull((`j`.`Duration`), 0)) * ifmissingornull((`j`.`Weight`), 0)), (ifmissingornull((`j`.`Duration`), 0) * ifmissingornull((`j`.`Weight`), 0)), ifmissingornull((`j`.`Duration`), 0), ifmissingornull((`j`.`RawScore`), 0)] for `j` in (`staffjobscores `.`Jobs`) end"
> }
> ],
> "#time_normal": "00:11.7987",
> "#time_absolute": 11.7987572
> },
> {
> "#operator": "FinalProject",
> "#stats": {
> "#itemsIn": 61967,
> "#itemsOut": 61967,
> "#phaseSwitches": 185902,
> "execTime": "114.9695ms",
> "kernTime": "4.2201501s"
> },
> "#time_normal": "00:00.1149",
> "#time_absolute": 0.1149695
> }
> ]
> }
> ]
> },
> {
> "#operator": "Alias",
> "#stats": {
> "#itemsIn": 61967,
> "#itemsOut": 61967,
> "#phaseSwitches": 247871,
> "execTime": "293.5329ms",
> "kernTime": "17.0233571s"
> },
> "as": "d",
> "#time_normal": "00:00.2935",
> "#time_absolute": 0.2935329
> },
> {
> "#operator": "Unnest",
> "#stats": {
> "#itemsIn": 61967,
> "#itemsOut": 247770,
> "#phaseSwitches": 619477,
> "execTime": "2.0373681s",
> "kernTime": "15.3625431s"
> },
> "as": "m",
> "expr": "(`d`.`n`)",
> "#time_normal": "00:02.0373",
> "#time_absolute": 2.0373681
> },
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "Filter",
> "#stats": {
> "#itemsIn": 247770,
> "#itemsOut": 247770,
> "#phaseSwitches": 991083,
> "execTime": "1.2689639s",
> "kernTime": "16.1509253s"
> },
> "condition": "((`m`[0]) is not null)",
> "#time_normal": "00:01.2689",
> "#time_absolute": 1.2689639
> },
> {
> "#operator": "InitialGroup",
> "#stats": {
> "#itemsIn": 247770,
> "#itemsOut": 1525,
> "#phaseSwitches": 498593,
> "execTime": "16.3172543s",
> "kernTime": "1.1276341s"
> },
> "aggregates": [
> "sum((`m`[1]))",
> "sum((`m`[2]))",
> "sum((`m`[3]))",
> "sum((`m`[4]))"
> ],
> "group_keys": [
> "(`d`.`StaffMember`)",
> "(`m`[0])"
> ],
> "#time_normal": "00:16.3172",
> "#time_absolute": 16.3172543
> }
> ]
> },
> {
> "#operator": "IntermediateGroup",
> "#stats": {
> "#itemsIn": 1525,
> "#itemsOut": 1525,
> "#phaseSwitches": 6103,
> "execTime": "7.7863ms",
> "kernTime": "17.4851514s"
> },
> "aggregates": [
> "sum((`m`[1]))",
> "sum((`m`[2]))",
> "sum((`m`[3]))",
> "sum((`m`[4]))"
> ],
> "group_keys": [
> "(`d`.`StaffMember`)",
> "(`m`[0])"
> ],
> "#time_normal": "00:00.0077",
> "#time_absolute": 0.0077862999999999995
> },
> {
> "#operator": "FinalGroup",
> "#stats": {
> "#itemsIn": 1525,
> "#itemsOut": 1525,
> "#phaseSwitches": 6103,
> "execTime": "52.0349ms",
> "kernTime": "17.4998563s"
> },
> "aggregates": [
> "sum((`m`[1]))",
> "sum((`m`[2]))",
> "sum((`m`[3]))",
> "sum((`m`[4]))"
> ],
> "group_keys": [
> "(`d`.`StaffMember`)",
> "(`m`[0])"
> ],
> "#time_normal": "00:00.0520",
> "#time_absolute": 0.0520349
> },
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "InitialProject",
> "#stats": {
> "#itemsIn": 1525,
> "#itemsOut": 1525,
> "#phaseSwitches": 4580,
> "execTime": "45.1872ms",
> "kernTime": "17.5088951s"
> },
> "result_terms": [
> {
> "expr": "(`d`.`StaffMember`)"
> },
> {
> "as": "JobName",
> "expr": "(`m`[0])"
> },
> {
> "as": "ScoreDurationWeight",
> "expr": "sum((`m`[1]))"
> },
> {
> "as": "DurationWeight",
> "expr": "sum((`m`[2]))"
> },
> {
> "as": "Duration",
> "expr": "sum((`m`[3]))"
> },
> {
> "as": "RawScore",
> "expr": "sum((`m`[4]))"
> }
> ],
> "#time_normal": "00:00.0451",
> "#time_absolute": 0.0451872
> },
> {
> "#operator": "FinalProject",
> "#stats": {
> "#itemsIn": 1525,
> "#itemsOut": 1525,
> "#phaseSwitches": 4576,
> "kernTime": "15.8134ms"
> }
> }
> ]
> }
> ]
> },
> "#time_normal": "00:00.0199",
> "#time_absolute": 0.0199986
> },
> {
> "#operator": "Stream",
> "#stats": {
> "#itemsIn": 1525,
> "#itemsOut": 1525,
> "#phaseSwitches": 6103,
> "kernTime": "17.5908936s"
> }
> }
> ],
> "~versions": [
> "2.0.0-N1QL",
> "6.0.1-2037-enterprise"
> ]
> }
Where as if i filter it down more by adding this between the Type and DateTimeUtc filter:
AND StaffMember= “02245346-0543-49d8-8826-db1699042d3a”
This now returns under 400ms, using the same index (Which is the same level of performance as I’m looking to get when doing the one above)
Plan for this one :
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "Authorize",
> "#stats": {
> "#phaseSwitches": 3,
> "servTime": "1.9968ms"
> },
> "privileges": {
> "List": [
> {
> "Target": "default:staffjobscores ",
> "Priv": 7
> }
> ]
> },
> "~child": {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "DistinctScan",
> "#stats": {
> "#itemsIn": 1046,
> "#itemsOut": 1046,
> "#phaseSwitches": 4189,
> "kernTime": "216.2538ms"
> },
> "scan": {
> "#operator": "IndexScan3",
> "#stats": {
> "#itemsOut": 1046,
> "#phaseSwitches": 4189,
> "execTime": "5.2616ms",
> "servTime": "210.9922ms"
> },
> "index": "ixd_CbDojo_2_Departments_DateTimeUtc_StaffMember",
> "index_id": "ae3ccaeb09ba3d62",
> "index_projection": {
> "primary_key": true
> },
> "keyspace": "staffjobscores ",
> "namespace": "default",
> "spans": [
> {
> "exact": true,
> "range": [
> {
> "high": "\"a3598df8-f8fd-41a7-b837-1e7a8e12de1a\"",
> "inclusion": 3,
> "low": "\"a3598df8-f8fd-41a7-b837-1e7a8e12de1a\""
> },
> {
> "high": "\"2019-12-31 23:59:59\"",
> "inclusion": 2,
> "low": "\"2019-01-01 00:00:00\""
> },
> {
> "high": "\"02245346-0543-49d8-8826-db1699042d3a\"",
> "inclusion": 3,
> "low": "\"02245346-0543-49d8-8826-db1699042d3a\""
> }
> ]
> }
> ],
> "using": "gsi",
> "#time_normal": "00:00.2162",
> "#time_absolute": 0.2162538
> }
> },
> {
> "#operator": "Fetch",
> "#stats": {
> "#itemsIn": 1046,
> "#itemsOut": 1046,
> "#phaseSwitches": 4319,
> "execTime": "5.8573ms",
> "kernTime": "95.9923ms",
> "servTime": "158.1426ms"
> },
> "keyspace": "staffjobscores ",
> "namespace": "default",
> "#time_normal": "00:00.1639",
> "#time_absolute": 0.1639999
> },
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "Filter",
> "#stats": {
> "#itemsIn": 1046,
> "#itemsOut": 1046,
> "#phaseSwitches": 4187,
> "execTime": "91.042ms",
> "kernTime": "169.9779ms"
> },
> "condition": "((((((`staffjobscores `.`Type`) = \"dpm::score\") and ((`staffjobscores `.`StaffMember`) = \"02245346-0543-49d8-8826-db1699042d3a\")) and (\"2019-01-01 00:00:00\" < (`staffjobscores `.`DateTimeUtc`))) and ((`staffjobscores `.`DateTimeUtc`) <= \"2019-12-31 23:59:59\")) and any `v` in (`staffjobscores `.`Departments`) satisfies (`v` = \"a3598df8-f8fd-41a7-b837-1e7a8e12de1a\") end)",
> "#time_normal": "00:00.0910",
> "#time_absolute": 0.091042
> },
> {
> "#operator": "InitialProject",
> "#stats": {
> "#itemsIn": 1046,
> "#itemsOut": 1046,
> "#phaseSwitches": 3143,
> "execTime": "150.03ms",
> "kernTime": "109.06ms"
> },
> "result_terms": [
> {
> "expr": "(`staffjobscores `.`StaffMember`)"
> },
> {
> "as": "n",
> "expr": "array [(`j`.`Name`), ((ifmissingornull((`j`.`Score`), 0) * ifmissingornull((`j`.`Duration`), 0)) * ifmissingornull((`j`.`Weight`), 0)), (ifmissingornull((`j`.`Duration`), 0) * ifmissingornull((`j`.`Weight`), 0)), ifmissingornull((`j`.`Duration`), 0), ifmissingornull((`j`.`RawScore`), 0)] for `j` in (`staffjobscores `.`Jobs`) end"
> }
> ],
> "#time_normal": "00:00.1500",
> "#time_absolute": 0.15003
> },
> {
> "#operator": "FinalProject",
> "#stats": {
> "#itemsIn": 1046,
> "#itemsOut": 1046,
> "#phaseSwitches": 3139,
> "execTime": "934.1µs",
> "kernTime": "8.9655ms"
> },
> "#time_normal": "00:00.0009",
> "#time_absolute": 0.0009341
> }
> ]
> }
> ]
> },
> {
> "#operator": "Alias",
> "#stats": {
> "#itemsIn": 1046,
> "#itemsOut": 1046,
> "#phaseSwitches": 4187,
> "execTime": "7.0089ms",
> "kernTime": "261.9807ms"
> },
> "as": "d",
> "#time_normal": "00:00.0070",
> "#time_absolute": 0.007008899999999999
> },
> {
> "#operator": "Unnest",
> "#stats": {
> "#itemsIn": 1046,
> "#itemsOut": 4186,
> "#phaseSwitches": 10467,
> "execTime": "17.8891ms",
> "kernTime": "251.1005ms"
> },
> "as": "m",
> "expr": "(`d`.`n`)",
> "#time_normal": "00:00.0178",
> "#time_absolute": 0.017889099999999998
> },
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "Filter",
> "#stats": {
> "#itemsIn": 4186,
> "#itemsOut": 4186,
> "#phaseSwitches": 16747,
> "execTime": "7.3776ms",
> "kernTime": "291.6149ms"
> },
> "condition": "((`m`[0]) is not null)",
> "#time_normal": "00:00.0073",
> "#time_absolute": 0.0073776
> },
> {
> "#operator": "InitialGroup",
> "#stats": {
> "#itemsIn": 4186,
> "#itemsOut": 25,
> "#phaseSwitches": 8425,
> "execTime": "251.9318ms",
> "kernTime": "75.0577ms"
> },
> "aggregates": [
> "sum((`m`[1]))",
> "sum((`m`[2]))",
> "sum((`m`[3]))",
> "sum((`m`[4]))"
> ],
> "group_keys": [
> "(`d`.`StaffMember`)",
> "(`m`[0])"
> ],
> "#time_normal": "00:00.2519",
> "#time_absolute": 0.2519318
> }
> ]
> },
> {
> "#operator": "IntermediateGroup",
> "#stats": {
> "#itemsIn": 25,
> "#itemsOut": 25,
> "#phaseSwitches": 103,
> "execTime": "999.6µs",
> "kernTime": "326.9895ms"
> },
> "aggregates": [
> "sum((`m`[1]))",
> "sum((`m`[2]))",
> "sum((`m`[3]))",
> "sum((`m`[4]))"
> ],
> "group_keys": [
> "(`d`.`StaffMember`)",
> "(`m`[0])"
> ],
> "#time_normal": "00:00.0009",
> "#time_absolute": 0.0009996
> },
> {
> "#operator": "FinalGroup",
> "#stats": {
> "#itemsIn": 25,
> "#itemsOut": 25,
> "#phaseSwitches": 103,
> "execTime": "999.8µs",
> "kernTime": "327.9891ms"
> },
> "aggregates": [
> "sum((`m`[1]))",
> "sum((`m`[2]))",
> "sum((`m`[3]))",
> "sum((`m`[4]))"
> ],
> "group_keys": [
> "(`d`.`StaffMember`)",
> "(`m`[0])"
> ],
> "#time_normal": "00:00.0009",
> "#time_absolute": 0.0009998
> },
> {
> "#operator": "Sequence",
> "#stats": {
> "#phaseSwitches": 1
> },
> "~children": [
> {
> "#operator": "InitialProject",
> "#stats": {
> "#itemsIn": 25,
> "#itemsOut": 25,
> "#phaseSwitches": 80,
> "execTime": "2ms",
> "kernTime": "328.9889ms"
> },
> "result_terms": [
> {
> "expr": "(`d`.`StaffMember`)"
> },
> {
> "as": "JobName",
> "expr": "(`m`[0])"
> },
> {
> "as": "ScoreDurationWeight",
> "expr": "sum((`m`[1]))"
> },
> {
> "as": "DurationWeight",
> "expr": "sum((`m`[2]))"
> },
> {
> "as": "Duration",
> "expr": "sum((`m`[3]))"
> },
> {
> "as": "RawScore",
> "expr": "sum((`m`[4]))"
> }
> ],
> "#time_normal": "02:00",
> "#time_absolute": 120
> },
> {
> "#operator": "FinalProject",
> "#stats": {
> "#itemsIn": 25,
> "#itemsOut": 25,
> "#phaseSwitches": 76,
> "kernTime": "1.0003ms"
> }
> }
> ]
> }
> ]
> },
> "#time_normal": "00:00.0019",
> "#time_absolute": 0.0019968
> },
> {
> "#operator": "Stream",
> "#stats": {
> "#itemsIn": 25,
> "#itemsOut": 25,
> "#phaseSwitches": 103,
> "kernTime": "333.986ms"
> }
> }
> ],
> "~versions": [
> "2.0.0-N1QL",
> "6.0.1-2037-enterprise"
> ]
> }