<div>Hello all,</div><div><br></div>Am I doing something wrong with my queries, or is repoze.catalog.query very slow?<div><br></div><div>I have a `Catalog` with ~320,000 objects and 17 `CatalogFieldIndex`es. All the objects are indexed and up to date. This is the query I ran (field names renamed):</div>
<div><br></div><div><font face="courier new, monospace">    And(InRange(&#39;float_field&#39;, 0.01, 0.04),</font></div><div><font face="courier new, monospace">        InRange(&#39;datetime_field&#39;, seven_days_ago, today),</font></div>
<div><font face="courier new, monospace">        Eq(&#39;str1&#39;, str1),</font></div><div><div><font face="courier new, monospace">        Eq(&#39;str2&#39;, str2),</font></div></div><div><div><font face="courier new, monospace">        Eq(&#39;str3&#39;, str3),</font></div>
</div><div><div><font face="courier new, monospace">        Eq(&#39;str4&#39;, str4))</font></div></div><div><br></div><div>It returned 15 results so it&#39;s not a large result set by any means. The strings are like labels - there are &lt;20 things any one of the string fields can be.</div>
<div><br></div><div>This query took a few minutes to run the first time. Re-running it again in the same session took &lt;1 second each time. When I restarted the session it took only 30 seconds, and again 1 second each subsequent time.</div>
<div><br></div><div>What makes it run so slow? Is it that the catalog isn&#39;t fully in memory? If so, is there any way I can guarantee the catalog will be in memory given that my entire database doesn&#39;t fit in memory all at once?</div>
<div><br></div><div>Thanks,</div><div>- Claudiu</div>