mozilla / mentat

UNMAINTAINED A persistent, relational store inspired by Datomic and DataScript.
https://mozilla.github.io/mentat/
Apache License 2.0
1.65k stars 115 forks source link

[query] Exploit AVET and VAET indexes in query engine #757

Open ncalexan opened 6 years ago

ncalexan commented 6 years ago

The SQLite schema defining the datoms table (and the indexes upon it) specifies the AVET and VAET indexes as partial: see https://github.com/mozilla/mentat/blob/master/db/src/db.rs#L180-L181 and https://github.com/mozilla/mentat/blob/master/db/src/db.rs#L183-185. The only way the SQLite query engine can exploit those indexes is if the produced SQL constrains the query, in some way to have the relevant index_{avet,vaet} columns set -- and we don't do that right now.

There's a similar but technically distinct case that we do support. The :db/fulltext true case is managed as index_fulltext and as a separate table. If we wanted to, we could manage the partial indexes as separate tables manually. It's not clear what is the more desirable SQLite schema.