首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择条件有效应用的随机行

选择条件有效应用的随机行
EN

Stack Overflow用户
提问于 2015-08-11 11:37:00
回答 1查看 354关注 0票数 0

我有一个名称表,其结构类似于:

代码语言:javascript
复制
id int(11) -Auto Increment PK
name varchar(20)
gender varchar(10)
taken tinyint - bool value

我想要获得单行的随机名称,其中性别为男性,taken为false。我怎样才能在不减速的情况下做到这一点?

我想到的是,SELECT gender = maletaken = false所在的所有行。然后使用php的rand(1, total_rows),并使用随机生成的记录号中的名称作为结果数组。

或者我可以使用,但是RAND()会减慢这个过程(取自关于堆栈溢出的其他问题)

代码语言:javascript
复制
SELECT * FROM xyz WHERE (`long`='0' AND lat='0') ORDER BY RAND() LIMIT 1
EN

回答 1

Stack Overflow用户

发布于 2015-08-11 14:09:47

您可以采用以下方法:

随机选择符合您条件的id列表,如用php SELECT id FROM table WHERE name=...

  • choose an id随机获取整个数据,如SELECT * FROM table WHERE id=<id>

  1. data with the id

这种方法将最大化MySQL中的查询缓存。步骤3中的查询很有可能命中相同的id,在这种情况下,查询缓存可以加速数据库访问。此外,如果将来使用像memcached或redis这样的缓存,步骤3也可以由它们来处理,甚至不需要去数据库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31932775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档