Improve sqlite mapping query
To find matching rows, the database must first search in the index. If the WHERE clause also uses columns not in the index, the database also has to read candidate rows from the actual table to be able to check those other columns.
Therefore, you would get the largest further speedup by adding all columns from the WHERE clause to the index.
You can also create a covering index by adding all columns from the SELECT clause to the index. Then no rows have to be read from the table. This might halve the query time.
Adding columns makes the index larger, which might slow down updates, which is probably not a problem for you.