What are some common data partitioning strategies, and how do they impact query performance in a distributed system?