More efficient way for AI's to find targets

I’ve already used the idea of having a single list of all targetable gameobjects in a scene which all AI’s then use to compare the distances as well as tags to find the closest object that is an enemy to aim at, move to, or do whatever. It works for now but it seems to be a little memory hungry (not too bad of an issue on pc’s)but the thought of how many distances need to compared seems that this approach might call for a pretty beefy computer should my game ever peak at roughly 200 AI’s trying to target other objects (and AI’s) or if there just ever happens to be a rather large number of targetable objects.

So is there any more efficient approach?

Spatial binning (or spatial hashing) comes to mind.

Put a large sphere collider around an enemy marked as trigger. When Player enters it, begin Target/Aggro sequence. Put an even larger sphere collider around said enemy, if no Player is in it, tell it to Sleep until a Player enter event re-awakes it.

This is a minimal code suggestion. If you are good at coding, there are surely better ways.