This query time ranges from 1 sec to 30 sec depending upon the target ‘targetuser’ some users with no data generate the longest query times.
SELECT *
FROM vigorlending
WHERE (`globalStats`.`bailoutupuser` = "targetuser"
OR `globalStats`.`bailoutuser` = "targetuser")
AND event="afterfull"
AND type="stateUpdate"
ORDER BY block.num DESC
I created some indexes which are used in the query using an intersect scan ().
CREATE INDEX `type` ON `vigorlending`(`type`)
CREATE INDEX `event` ON `vigorlending`(`event`)
I created other indexes more specifically for this query but they don’t seem to be used.
CREATE INDEX `bailoutupuser` ON `vigorlending`(`globalStats`.`bailoutupuser`)
CREATE INDEX `bailoutuser` ON `vigorlending`(`globalStats`.`bailoutuser`)
CREATE INDEX `userbailout` \
ON `vigorlending`(`globalStats`.`bailoutuser`,`globalStats`.`bailoutupuser`)\
WHERE`event`=`afterfull`\
AND `type`=`stateUpdate`
Plan text for query above
{
"#operator": "Sequence",
"~children": [
{
"#operator": "Sequence",
"~children": [
{
"#operator": "IntersectScan",
"scans": [
{
"#operator": "IndexScan3",
"index": "event",
"index_id": "b62a3ab7211b8455",
"index_projection": {
"primary_key": true
},
"keyspace": "vigorlending",
"namespace": "default",
"spans": [
{
"exact": true,
"range": [
{
"high": "\"afterfull\"",
"inclusion": 3,
"low": "\"afterfull\""
}
]
}
],
"using": "gsi"
},
{
"#operator": "IndexScan3",
"index": "type",
"index_id": "fa19a2417d223998",
"index_projection": {
"primary_key": true
},
"keyspace": "vigorlending",
"namespace": "default",
"spans": [
{
"exact": true,
"range": [
{
"high": "\"stateUpdate\"",
"inclusion": 3,
"low": "\"stateUpdate\""
}
]
}
],
"using": "gsi"
}
]
},
{
"#operator": "Fetch",
"keyspace": "vigorlending",
"namespace": "default"
},
{
"#operator": "Parallel",
"~child": {
"#operator": "Sequence",
"~children": [
{
"#operator": "Filter",
"condition": "((((((`vigorlending`.`globalStats`).`bailoutupuser`) = \"netdanieleee\") or (((`vigorlending`.`globalStats`).`bailoutuser`) = \"netdanieleee\")) and ((`vigorlending`.`event`) = \"afterfull\")) and ((`vigorlending`.`type`) = \"stateUpdate\"))"
},
{
"#operator": "InitialProject",
"result_terms": [
{
"expr": "self",
"star": true
}
]
}
]
}
}
]
},
{
"#operator": "Order",
"sort_terms": [
{
"desc": true,
"expr": "((`vigorlending`.`block`).`num`)"
}
]
},
{
"#operator": "FinalProject"
}
]
}