Use sqrt decomposition when:
You need a quick implementation with reasonable complexity
The problem has mixed operations where is acceptable
Segment trees feel like overkill or you're unsure how to adapt them Avoid sqrt decomposition when:
You need per operation for tight time limits
The problem has nested structures (use segment tree of segment trees)
You need persistent data structures The technique is a solid fallback. Not the fastest, but reliably correct.