Author of Bencher here. Bencher will now create all dimensions as needed, so the above use case should now work out of the box.
This change was made after all of the great feedback from early users like epage.
The VIEW itself is not a "materialized" view, but when the (normal) view is instantiated within a single query it is treated as MATERIALIZED because it is used multiple times in the query execution: https://www.sqlite.org/lang_with.html#materialization_hints
I think it was definitely unoptimized to begin with. The major slow down didn't happen until the model evolved though, as I mention in the Background section.
Not catching that change was certainly a performance failure!
If anything, this experience has made me appreciate Diesel even more!
Having strongly typed SQL has prevented these sort of bugs from happening at compile time. The only reason I ran into trouble here was that I went into `unsafe` land without proper precaution. That's on me, not the ORM.