title: how cross column correlation is handled by PostgreSQL Optimizer
body: <p>There is often a relationship or <strong>correlation between the data stored</strong> in different <strong>columns</strong> of the same table. For example, in the customers table, the values in the c_state column are influenced by the values in the country_id column, as the state of XYZ is only going to be found in the country ABC.</p>
  
  <p>I think PostgreSQL assumes predicates are <strong>mutually independent</strong> and selectivities for each predicate on the same relation are <strong>multiplied</strong> together. Hence selectivity estimates will be much smaller than actuals and <strong>non-optimal</strong> access paths may be chosen when data is highly dependent and skewed. How to avoid this in PostgreSQL?</p>
  
  <p>Can we create some kind of <strong>multi-column statistics</strong> on a group of columns in PostgreSQL 9.3.5. Is there any support for <strong>Multi-dimensional histograms</strong>?</p>