上个礼拜为自己的一个小站添加了”随便逛逛”的功能,感觉很爽^_^ 言归正传,MySQL中使用 order by rand() 就可以随机取出记录。
/* 随机获取10条记录 */ SELECT * FROM table ORDER BY rand( ) LIMIT 10;
方便是很方便,但是偶的破本本上执行需要17秒,这样的性能要是流量大一定拖垮服务器。(还好偶的小站流量很小, 嘿嘿~~~) Google到一种解决方法,还是不错的,以Wordpress的posts表为例,随机获取文章的ID。
/* 随机获取WordPress文章的ID */ SELECT `ID` FROM `wp_posts` AS t1 JOIN ( SELECT round( rand( ) * ( SELECT max( `ID` ) FROM `wp_posts` ) ) AS sid ) AS t2 WHERE t1.id >= t2.sid AND `post_type` = 'post' AND `post_status` = 'publish' ORDER BY t1.id LIMIT 1
这个SQL语句确实有效,执行只有0.1秒,可是每次获取的都是连续的ID,只能一次获取一条记录,想要获取多条就多执行几次。有得必有失嘛。 至于获取的ID,WP 有内置的函数 get_permalink( $ID ) 可以得到文章的链接。

最新评论