PHP MYSQL数据库执行效率的问题

SELECT*FROMcontswherecid=$cidORDERBYrand()LIMIT10从数据库中随机提取10条信息数据少时没注意但是当有几十万条时,速度就会很... SELECT * FROM conts where cid=$cid ORDER BY rand() LIMIT 10

从数据库中随机提取 10条信息

数据少时没注意

但是当有几十万条时,速度就会很慢

这是PHP的自身的原因,还是我写的有问题?

看不明白啊
能不能按我的语句具体写下? 谢谢
SELECT * FROM conts where cid=$cid ORDER BY rand() LIMIT 10
展开
 我来答
学长就爱吃
2011-01-09 · TA获得超过198个赞
知道答主
回答量:74
采纳率:0%
帮助的人:115万
展开全部
Mysql语句优化是一个学问

大家都知道,大量数据的order by rand()效率是非常底的。
而且你还select * from xxx ,rand()不好优化,建议不用。

替代方法:
个人建议,先查询总数,然后使用函数,随机取出10个数,
然后SELECT * FROM conts where cid=$cid and xxxx in (你取出的10个数);

此外要设置好合理的索引,有利mysql检索速度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljked1
2011-01-08 · 超过30用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:69.3万
展开全部
ORDER BY rand() 的问题,数据少的话性能没问题,上30万的大表就不行了。
一般是按照表的主键,min和max,从中间随机10个,然后通过id匹配。
RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))
+(SELECT MIN(id) FROM `table`))
选出10个随机id
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sc_2011
2011-01-09 · TA获得超过103个赞
知道答主
回答量:108
采纳率:0%
帮助的人:111万
展开全部
设置主键,慢是因为影响的行数大。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式