re custom indexes: Does not the index on expression functionality perform what you are requesting for native tables? All you have to do is to register a user defined function with the SQLITE_DETERMINISTIC flag, then CREATE INDEX yadayada ON tbl (my_func([<options>,*]<fields>)); allows you to use EXACTLY the same expression in the WHERE, JOIN ON and ORDER BY clauses. https://sqlite.org/expridx.html re VT indexes: The interface is already in place to index on anything you want in a virtual table, all you need do is implement xBestIndex and xFilter/xNext to cope with whatever you need.