我想對SAS散列表中的存儲桶的定義做一點澄清。這個問題正是關於hashexp參數。hashexp指定的SAS HashTable中的表大小是什麼?
根據該SAS文檔,hashexp是:
散列對象的內部表的大小,其中,哈希表的大小爲2n。
HASHEXP的值用作創建哈希表大小的二次冪指數。例如,HASHEXP的值爲4相當於散列表大小爲24或16.HASHEXP的最大值爲20.
散列表大小不等於可以存儲的項目數存儲。將哈希表設想爲一個「桶」陣列。哈希表大小爲16將有16個桶。每個桶可以容納無數的物品。散列表的效率在於散列函數將項目映射到並從桶中檢索項目的能力。
您應該設置哈希表大小相對於哈希對象中的數據量,以最大限度地提高哈希對象查找例程的效率。嘗試不同的HASHEXP值,直到獲得最佳結果。例如,如果散列對象包含一百萬個項目,則散列表大小爲16(HASHEXP = 4)可以工作,但效率不高。散列表大小爲512或1024(HASHEXP = 9或10)會導致最佳性能。
的問題是究竟是哈希表的大小,而不是數據的哈希對象中的量?
應該理解爲我們是否想要分配儘可能多的內存,因爲它可能是必需的,但不會少於,不多於。讓事情快速發展是兩個重要的力量。但它並不限制可能使用的數據量,它只是表示將使用多少數據,對吧?