如何优化sql查询标记云

如何优化sql查询标记云,sql,lag,tag-cloud,Sql,Lag,Tag Cloud,我有墙纸网站,我有问题与服务器滞后-每次来访时,我的网站是加载标签云(随机25个标签)和执行此查询。我有4000多张壁纸和10000多个标签。如何优化此查询?我的网站每天至少中断3-5次 另外,我的朋友建议我每5分钟执行一次查询,但我不知道如何实现。你的朋友有个好主意。无论您使用的是什么服务器端框架,都要为其寻找缓存选项 另一个想法是摆脱“随机”要求。完整函数:函数get_tags_data(){$query=$this->db->query('SELECT DISTINCT tag,occur

我有墙纸网站,我有问题与服务器滞后-每次来访时,我的网站是加载标签云(随机25个标签)和执行此查询。我有4000多张壁纸和10000多个标签。如何优化此查询?我的网站每天至少中断3-5次


另外,我的朋友建议我每5分钟执行一次查询,但我不知道如何实现。你的朋友有个好主意。无论您使用的是什么服务器端框架,都要为其寻找缓存选项


另一个想法是摆脱“随机”要求。

完整函数:函数get_tags_data(){$query=$this->db->query('SELECT DISTINCT tag,occurrencess FROM'.DBPREFIX.'tags其中ID>=(SELECT FLOOR(MAX(ID)*RAND())FROM'.DBPREFIX.'tags)并排除=0 ORDER BY ID LIMIT'.MAX_tags);return($query->num_rows())?$query->result():FALSE;}只要去掉它就行了。返回DB给您的任何内容,作为前25条记录。
SELECT DISTINCT tag, occurences
FROM ' . DBPREFIX . 'tags
WHERE ID >= 
(
    SELECT 
        FLOOR(MAX(ID) * RAND()) 
    FROM 
        ' . DBPREFIX . 'tags
) AND exclude=0 ORDER BY ID LIMIT ' . MAX_TAGS