If you have one player and lots of enemies, there may be one optimization you can do (a technique I use in my game “Planetoid Escape”). Instead of having each enemy query the world state to see if the player is in range, have the player query the world, (i.e. do the bounding sphere check) and broadcast its location to all enemies within range. This way you reduce the possible 10s or 100s of bounding sphere checks per frame to just one.
If different enemies have different ranges, just do the bounds with the largest radius and then each enemy still has to check if the the player is in range when getting the position message from the player, but avoids doing the bounds check (which should be more expensive).
I haven’t done thorough performance gain investigation of this technique, but in theory it should be an improvement.
If you have two player or 10 players then it will be different.
The implementation then be different. Each Mob need to keep a list of sorted distance so that he can chase the closest player. The mob can be more intelligent.