中国网格虚拟主机不满意退款承诺!
24小时咨询热线:021-51095771  51087627
中国网格
在中国买空间 就选网格
顶级虚拟主机服务商
支付方式数 据 库优惠套餐
您当前的位置 
首页
虚拟主机
技术
正文

PHP教程:mysql随机查询的优化

发布时间:2013-2-28 17:08:20| www.cnwg.cn | 标签:php,Mysql

mysql随机查询的优化 mysql随机函数RAND()的使用方法

mysql随机查询Z常见的写法如下:

1 SELECT * FROM tablename ORDER BY RAND() LIMIT 1

php手册上如此解释:

About selecting random rows from a MySQL table:

SELECT * FROM tablename ORDER BY RAND() LIMIT 1

works for small tables, but once the tables grow larger than 300,000 records or so this will be very slow because MySQL will have to process ALL the entries from the table, order them randomly and then return the first row of the ordered result, and this sorting takes long time. Instead you can do it like this (atleast if you have an auto_increment PK):

SELECT MIN(id), MAX(id) FROM tablename;

Fetch the result into $a

$id=rand($a[0],$a[1]);

SELECT * FROM tablename WHERE id>=’$id’ LIMIT 1

大意是说,如果你用 ORDER BY RAND() 来随机读取记录的话,当数据表记录达到30万或者更多的时候,mysql将非常吃力.所以php手册里给了一种方法,结合php来实现:

首先 SELECT MIN(id), MAX(id) FROM tablename; 取数据库里Z大Z小值;

然后 $id=rand($a[0],$a[1]); 产生一个随机数;

Z后 SELECT * FROM tablename WHERE id>=’$id’ LIMIT 1 将上面产生的随机数带入查询;

很显然上面是Z有效率的。

如果需要多条记录的话,就循环查询,并记得去除重复记录。

其它的一些方法可以自行查阅一下google或者百度。


php空间

php空间

价格:80元 (全网低价)

支持PHP相关程序

数据库空间

数据库存储空间

价格:200元/100M

MySql,SQL可选择

参考资料

我要评价

评价发表成功

错误提示
关于网格 | 联系方式 | 网站地图 | 客户中心 | 网格招聘 | 代理合作 | 支付方式 | 帮助中心
中国网格所属上海羽灿计算机科技有限公司版权所有 Copyright©cnwg.cn 2003-2014,All Rights Reserved.

联系电话:021-51095771 021-51087627 夜间技术:021-51087637 紧急电话:18916133353 传真:021-51087637-202
版权所有:上海羽灿计算机科技有限公司 中国网格(cnwg.cn/cnwg.cc)©2003-2013 All Rights Reserved.
地址:上海市涞亭南路169弄53号 邮编:201108 ICP经营许可证编号:沪B2-20060019 沪ICP备06012189号

  • 经营性网站
    备案信息
  • 网络110
    报警服务
  • 文明办网
    先进单位
  • 支付宝
    特约商家
  • 网络社区
    征信网
  • 上海工商
    网上亮照