2013-03-18 47 views
0
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 

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

P.S.我的朋友建议我每5分钟执行一次查询,但我不知道如何实现它。

+0

全功能: 功能get_tags_data() { \t \t $查询= $这个 - > DB->查询 \t \t( \t \t \t“SELECT \t \t \t \t DISTINCT标签, \t \t \t \t发生 \t \t \t从 \t \t \t \t'。 DBPREFIX。 '标签 \t \t \t WHERE ID> =(SELECT FLOOR(MAX(ID)* RAND())FROM'。DBPREFIX。'tags)AND exclude = 0 ORDER BY ID LIMIT'。 MAX_TAGS \t \t); \t \t return($ query-> num_rows())? $ query-> result():FALSE; \t} – user2183329 2013-03-18 17:23:49

回答

0

你的朋友有一个好主意。无论您使用的是哪种服务器端框架,都可以为它寻找缓存选项。

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

+0

更改rand为什么? – user2183329 2013-03-18 18:08:45

+0

只要摆脱它。返回数据库提供给您的前25条记录。 – joelt 2013-03-18 23:58:10