For optimal performance, a span should have a single stripeset (it should never have been expanded). The stripeset should contain a large number of system drives, and it should reside on a thinly provisioned HDP pool. The more a span differs from this ideal configuration, the poorer the performance, even after migration to new storage.
The worst case is a span for which the span-list -s command shows a large number of stripesets of one or two SDs each and also where the span-space-distribution command shows that the filesystems are not evenly spread across those stripesets.
A second configuration that cannot be helped by migration is a filesystem that is much smaller than the current maximum size, but which, according to the filesystem-scalability command, cannot expand because it has used up most or all of the available chunk runs.
For these configurations, use Object Replication or Universal Migrator.