Why not to mine more efficient? I'm a kinda newbie here. But this is what I completely can not understand.

If every single miner have to 'arrange' transactions and then compute a SHA-256 function of a given memory chunk, and if computed SHA-256 must match a given criteria (so-called difficulty), why not to split such work, and force each miner node to 'compute' (or 'pick') his own range of nonces? I mean, okay, in good old days every miner was on his own, there was a real 'competition' or concurrent race between them, but now times have changed. Now miners gathers into 'pools'. Just look at the chart:



I mean, 28.2% of miners may help each other by tearing this work apart. Are there any less brute but more 'lock pick' ways? If such large segments of the network are now centralized, why not to look for map-reduce approach? Either I've missed some important details, or there is the way. Thanks a lot for the explainations.
force each miner node to 'compute' (or 'pick') his own range of nonces?


You don't need to force them. They will obviously do so on their own - doing anything else would be ridiculous, as the fastest miner would always win if they all try to run the same race.

In practice this is automatic, as every miner pays out to himself. As their payout addresses are different, their coinbase transactions will be different, which means their transaction hashes will be different, which means their Merkle tree will be different, which means their Merkle root hashes will be different, and as a result block header will be different too. In fact, it's impossible for them to be working on the same block template without forgetting to pay themselves!