Try using @Quenty’s excellent OctTree module. It’s fast and efficient for breaking down parts into a search radius. it can be coupled with the camera so stuff behind the player are not included in the search.
It’s included in @boatbomber’s excellent WindShake demo here. You should be able to glean it’s usage from the uncopylocked places here: