The selection of the detector typically is done based on the complexity and performance requirements. ML (Maximum likelihood) is an optimal receiver, but it has very large computational complexity. MMSE is suboptimal solution, that is simpler from the computational complexity perspective, but still have good performance – and it’s typically selected for practical implementations. If we go to e.g. Zero Forcing (ZF) solution, then it’s even simpler, but the performance is not that good (i.e. in low SNR regime we don’t get good results because of noise enhancement).