generator as the one used for generating the training data (using a different random seed) with 1200 unique query pairs, with zero to two joins.

-   cnt\_test2, a synthetic workload generated by the same queries generator as the one used for generating the training data (using a different random seed) with 1200 unique query pairs, with zero to *five* joins. This dataset is used to examine how CRN generalizes to additional joins.

The Quality of Estimates {#mylabel}
------------------------

Figure \[fig:cnt\_test1\] depicts the q-error of the CRN model compared to the Crd2Cnt(PostgreSQL) and Crd2Cnt(MSCN) models on the cnt\_test1 workload. While Crd2Cnt(PostgreSQL)’s errors are more skewed towards the positive spectrum,\
Crd2Cnt(MSCN) performs extremely well as does the CRN model. Observe that we make sure to train MSCN in such a way that it will predict containment rates efficiently, while the primary purpose of the MSCN model, as described in [@LearnedCrd] is estimating cardinalities. That is, had we trained the MSCN model for its main purpose, with “independent” queries, we might have ended up with worse results for MSCN.

To provide a fuller picture, we also show the percentiles, maximum, and mean q-errors. As depicted in Table \[table:cnt\_test1\], CRN provides the best results 