zaten genis kapsamli bir sey hazirlaniyorsa bu tip salt sql sorgulari yerine cache mekanizmalari kullanmak daha faydali olacaktir. Ayrica mysql üzerinde string tipte bir arama yapmadigimiz icin 2 3 sorgunun pek sakıncası olmayacagini dusunuyorum.

ornek bir cacheleme sistemi :
<?php
    include('conn.php');
    
    function cachele($q,$t=5) /* $t 5 dk cache*/
    {
        $crc = crc32($q);
        $u = mysql_query($q);
        while($r = mysql_fetch_assoc($u))
        {
            $z[] = $r;
        }
        if(!is_file('cache_'.$crc.'.php')):
            touch('cache_'.$crc.'.php');
            file_put_contents('cache_'.$crc.'.php',"<?php \n //-- sql : $q \n\r \$data = ".var_export($z,true)." ; \r\n ?>");
            return $z;
        else:
            $x = floor((time() - filemtime('cache_'.$crc.'.php')) / 60);
            if($x > $t):
                file_put_contents('cache_'.$crc.'.php',"<?php \n //-- sql : $q \n\r \$data = ".var_export($z,true)." ; \r\n ?>");
                return $z;
            else:
                return cagir('cache_'.$crc.'.php');
            endif;
        endif;
    }
    
    function cagir($file)
    {
        include($file);
        echo 'cache\'den aldim abi';
        return $data;
    }
    
    print_r(cachele("SELECT * FROM video"));

?>
Yukarıda "SELECT * FROM video" sorgusunun crc32'li hashi aliniyor.
eger cache_crc32sorgu.php isimli bir dosya yoksa bu dosya olusturularak icine var_export fonksiyonu yardimi ile yapilan sorgunun degerleri array olarak cikti ediliyor.
bu sorguyu tekrarladigimizda eger olusturulan dosya zamani $t degerinden kucukse bu dosya include edilip dosyada yazili olan $data isimli array return ediliyor .
Sonuc olarak mysql'i ayni sorgulada 5 dklık zamanla bypass etmiş oluyoruz. güzel bir filecache denemenizde fayda var.