A distributed data warehouse system, comprising: a plurality of nodes; wherein at least some nodes of the plurality of nodes each comprise: storage for a columnar database table, wherein said storage comprises a plurality of data blocks; a query execution module; wherein at least one node of the plurality of nodes comprises a height-balanced histogram generator, configured to: determine a plurality of bucket range sizes for a height-balanced histogram representing a distribution of data among a plurality of buckets in a column of the columnar database table, wherein each bucket of the plurality of buckets represents an existence of one or more data values of the data in the column within a range of values; generate a probabilistic data structure for each data block of one or more data blocks storing data for the column, wherein the probabilistic data structure indicates for which buckets of the plurality of buckets there is a data value in the bucket range size stored in the data block; wherein the query execution module is configured to: receive an indication of a query directed to the column of the columnar database table for select data; in response to receiving the indication of the query: examine the probabilistic data structure for each of the one or more data blocks storing data for the column to determine particular ones of the one or more data blocks which do not need to be read in order to service the query for the select data; and read the one or more data blocks storing data for the column excepting the particular ones of the one or more data blocks which do not need to be read. a plurality of nodes; wherein at least some nodes of the plurality of nodes each comprise: storage for a columnar database table, wherein said storage comprises a plurality of data blocks; a query execution module; storage for a columnar database table, wherein said storage comprises a plurality of data blocks; a query execution module; wherein at least one node of the plurality of nodes comprises a height-balanced histogram generator, configured to: determine a plurality of bucket range sizes for a height-balanced histogram representing a distribution of data among a plurality of buckets in a column of the columnar database table, wherein each bucket of the plurality of buckets represents an existence of one or more data values of the data in the column within a range of values; generate a probabilistic data structure for each data block of one or more data blocks storing data for the column, wherein the probabilistic data structure indicates for which buckets of the plurality of buckets there is a data value in the bucket range size stored in the data block; determine a plurality of bucket range sizes for a height-balanced histogram representing a distribution of data among a plurality of buckets in a column of the columnar database table, wherein each bucket of the plurality of buckets represents an existence of one or more data values of the data in the column within a range of values; generate a probabilistic data structure for each data block of one or more data blocks storing data for the column, wherein the probabilistic data structure indicates for which buckets of the plurality of buckets there is a data value in the bucket range size stored in the data block; wherein the query execution module is configured to: receive an indication of a query directed to the column of the columnar database table for select data; in response to receiving the indication of the query: examine the probabilistic data structure for each of the one or more data blocks storing data for the column to determine particular ones of the one or more data blocks which do not need to be read in order to service the query for the select data; and read the one or more data blocks storing data for the column excepting the particular ones of the one or more data blocks which do not need to be read. receive an indication of a query directed to the column of the columnar database table for select data; in response to receiving the indication of the query: examine the probabilistic data structure for each of the one or more data blocks storing data for the column to determine particular ones of the one or more data blocks which do not need to be read in order to service the query for the select data; and read the one or more data blocks storing data for the column excepting the particular ones of the one or more data blocks which do not need to be read. examine the probabilistic data structure for each of the one or more data blocks storing data for the column to determine particular ones of the one or more data blocks which do not need to be read in order to service the query for the select data; and read the one or more data blocks storing data for the column excepting the particular ones of the one or more data blocks which do not need to be read.