On 15/7/19 11:25 PM, Nelson, Erik - 2 wrote: > Dominique Devienne wrote on Monday, July 15, 2019 2:41 AM > >> That's when you reach for virtual tables (and their "virtual indices"). >> I.e. you keep your data in native data-structures (Boost.MultiIndex in my >> case), >> and just provide a SQLite view of it. Much faster than "pure-in-Memory" with >> SQLite-managed pager-backed B-tree tables. Steep learning curve, especially >> for the indexing part, but the results are well worth it IMHO. >> Which can be freely mixed with "real" tables having "real" indexes (in the >> in-memory DB). > That sounds really intriguing- does it significantly speed up queries coming > in through the SQLite engine? Or the speed bump is only if accessing from > the C++-native side?
The whole point of virtual tables is to make something outside an actual SQLite DB accessible via normal SQL queries within SQLite; you'd still use the normal access methods (pointer deferencing, <map> lookups, etc.) from the native side. Speedup depends entirely on the efficiency of your implementation, of course. > Is there any literature out there or tips you can share that can flatten the > learning curve? The definitive documentation on SQLite virtual tables is here: https://sqlite.org/vtab.html A list of implementation examples is here: https://sqlite.org/vtablist.html Of which, a (relatively) simple example of exposing a C array is described here: https://sqlite.org/carray.html And whose source code is in your SQLite source distribution under ext/misc/carray.c, or online here: https://www.sqlite.org/src/artifact?ci=trunk&filename=ext/misc/carray.c Best Regards, Adrian _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users