gpt4 book ai didi

mysql - 优化 MySQL 选择查询以获取带有 where 子句的单个随机行

转载 作者:行者123 更新时间:2023-11-29 00:59:29 25 4
gpt4 key购买 nike

我有下表(包含超过一百万行):

**MyTable**
id - int(10)
externalId - smallint(5)
description - varchar(250)
status - smallint(6)
entrydate - int(10) (unix timestamp)

我希望能够使用以下 where 子句从此表中选择一个随机行(我只需要结果集中的 id 值):

/* The number of external ids here can range from 1 to around 50 */
WHERE externalId in (1,2,3,4,x,x,x)
/* Status is fixed at 2 for all calls */
AND status = 2
/* Entry date is typically (now - 30 days) or may be excluded all together */
AND entrydate > 1279887765

显而易见的解决方案是使用 rand(),但我发现它的性能有些欠缺,而且有相当详细的文档记录。那么有人有任何替代解决方案吗?

提供一些背景知识:我打算在 PHP 驱动的网站上使用此查询,输入参数取决于用户,因此这些参数会因用户而异。还值得一提的是,我根本无法更改表结构。

提前致谢。

最佳答案

当您说您使用 PHP 时,为什么不用该语言呢?

假设您知道有 100.000 行,在 PHP 中生成一个在此范围内的随机数,然后执行 LIMIT 查询

SELECT * FROM mytable ORDER BY id LIMIT $randomNumber, 1; 

关于mysql - 优化 MySQL 选择查询以获取带有 where 子句的单个随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com