The smallest possible number of sets you can perform per exercise/per session is 1, as explained in the article, Do One Set for Arm Growth. And the most I've ever seen is 10, as described in Advanced German Volume Training.
Both serve useful purposes from time to time – the former for maintenance purposes and the latter for short-term specialization phases – but most of the time, for most people, 3-5 sets is the optimal number, assuming you're training 3-4 times per week.
Ideally, whenever you start a new mesocycle (a planned 4-5 week training block), you'll start with the lower end of that range on week one, and then gradually increase the number of sets you do over the following 3-4 weeks, culminating in a very tough, high volume week, followed finally by a deload week where training intensity stays high, but at a lower volume.
Here's a hypothetical 5-week mesocycle:
- Week 1: 3 sets
- Week 2: 4 sets
- Week 3: 5 sets
- Week 4: 5-6 sets
- Week 5 (deload): 3-4 sets
There are a few different rationales for this type of progression:
- First, at the start of a new mesocycle, you'll likely be using a few new exercises and possibly a different rep bracket. The novelty of those new elements heightens your body's adaptive response to them. Think of it like this: If for some reason your life depended on being sore in 36-48 hours, you'd probably do something very unfamiliar, right?
- Second, while hard training is mandatory, redlining every week isn't a great idea because super-high volume training requires an extended recovery period (i.e., deload week). So if you go balls-out on week one, you're pretty much resigned to deloading the following week, which, extrapolated over time, means you'll spend half your time deloading. Clearly that's not optimal.
- Lastly, it's wise, especially when you've introduced new program elements, to give yourself a running start whenever you start a new mesocycle. After all, you can't be completely certain about how you'll react to exercises that you haven't done in a while.