一、等高直方图
下面演示如何在val2列产生等高直方图。
SELECT COUNT(*), MAX(VAL2) AS ENDPOINT_NUMBER
FROM (SELECT VAL2, NTILE(5) OVER(ORDER BY VAL2) AS ENDPOINT_NUMBER FROM T)
GROUP BY ENDPOINT_NUMBER
ORDER BY ENDPOINT_NUMBER;
COUNT(*)
ENDPOINT_NUMBER
200
104
200
105
200
105
200
106
200
106
这表示最小值到104之间有200个数,104到105有200个数,105到105有200个数,依此类推。也就是说每个桶上放的数是均匀的。上面的查询分配了5个桶,共装1000个数,平均一个桶装200个数。
然而在数据字典中存储等高直方图信息时,端点相同并且紧邻的桶是没有的,它存储的是一个压缩值。在直方图中多次出现的值被称为频繁值。
等高直方图的特征:
① 桶数少于唯一值总数。
② 端点值就是列的数值。这里要注意一点,非数字类型必须进行转换,此值仅取前六个字节。
③ endpoint_number列给出了桶号。
④ 等高直方图不存储一个取值的频度。