Hierarchical clustering is a prominent method in data science for organizing data into nested clusters without requiring a predefined number of clusters, differing from many other clustering techniques. It can be executed through two main approaches: agglomerative, which merges clusters in a bottom-up fashion, and divisive, which splits clusters in a top-down manner. Despite its advantages, hierarchical clustering faces significant scalability challenges due to its cubic computational complexity and substantial memory requirements, particularly with large and high-dimensional datasets. To address these issues, various strategies have been developed, such as sampling, approximation methods like Minimum Spanning Tree (MST), divide and conquer techniques, and dimensionality reduction. Furthermore, modern tools and frameworks, including Fastcluster, Apache Spark, and GPU-accelerated solutions, have been introduced to improve the efficiency of hierarchical clustering. However, these advancements also necessitate careful consideration of parameters and trade-offs between computational efficiency and the quality of clustering results, leaving analysts to apply their expertise in optimizing the process.