当前位置:数据库 > MySQL >>

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

补充:SELECT * FROM conts where cid=$cid ORDER BY rand() LIMIT 10 从数据库中随机提取 10条信息 数据少时没注意 但是当有几十万条时,速度就会很慢 这是PHP的自身的原因,还是我写的有问题? 看不明白啊 能不能按我的语句具体写下? 谢谢 SELECT * FROM conts where cid=$cid ORDER BY rand() LIMIT 10
答案: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
其他:设置主键,慢是因为影响的行数大。 Mysql语句优化是一个学问

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

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

此外要设置好合理的索引,有利mysql检索速度 

上一个:mysql和oracle的数据库的创建和使用
下一个:学作网站(php+mysql)简单的,栏目问题如:父栏目下面有1到多个子栏目,子栏目下又有很多记录.数据库如保设计?

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,