in_array tego nie wykonasz, zainteresuj się bardziej regexinterator:
http://php.net/manual/pl/class.regexiterator.php tyle odnośnie przeszukiwania tablic. Odnośnie celu w jakim chcesz to wykorzystać IMO błędnie zakładasz że jak będzie cache, to będzie lepiej, bo dzięki cache wszystko chodzi szybciej. Jeżeli tych danych masz niewiele, nie wiem czy jest jakiś sens się bawić, bo znacznie szybciej zrobi to baza danych. Przy większej ilości danych, nie ma sensu robić tego po stronie php, bo narzut będzie większy, niż wykonywałbyś to w bazie danych.
Rozwiązaniem twojego problemu może być optymalizacja zapytań, skonfigurowanie bazy danych (jeżeli masz taką możliwość) i chociażby zwiększenie domyślnego cache bazy (tak tak, baza również trzyma swoje cache), już powinno przynieść jakieś efekty. Rozwiązań jest oczywiście znacznie więcej, wypisałem tylko kilka które można dość szybko i bez problemu wykonać.