A software-defined network (SDN) separates the network control plane from the data forwarding plane. SDN has shown significant benefits in many ways compared to conventional non-SDN networks. However, traffic distribution in SDN impacts efficiency and raises many other challenges. For instance, uneven load distribution in the SDN significantly impacts the network performance. Hence, several SDN load balancing (LB) techniques have been introduced to improve the efficiency of SDN. In this article, we provide a thematic taxonomy of LB in SDN, considering several parameters from the past technical studies such as the objectives of LB, data plane LB techniques, control plane LB techniques, other aspects of data plane/control plane LB as well as the performance metrics for LB techniques. Furthermore, useful insights on LB and a comparative analysis of various promising SDN LB techniques are also included in the survey. Finally, existing challenges and future direction on SDN LB techniques are highlighted.