force SQLite to choose particular index for attribute search since it sometimes led to very inefficient query plans

This commit is contained in:
zadam 2020-01-04 19:22:16 +01:00
parent 79e7762c72
commit 571772069a

View File

@ -31,7 +31,8 @@ module.exports = function(filters, selectedColumns = 'notes.*') {
// can match notes because @tag can be both "shopping" and "christmas"
const alias = "attr_" + property + "_" + attrFilterId++;
joins[alias] = `LEFT JOIN attributes AS ${alias} `
// forcing to use particular index since SQLite query planner would often choose something pretty bad
joins[alias] = `LEFT JOIN attributes AS ${alias} INDEXED BY IDX_attributes_noteId_index `
+ `ON ${alias}.noteId = notes.noteId `
+ `AND ${alias}.name = '${property}' AND ${alias}.isDeleted = 0`;