我正在创建一个在线商店网站,该网站需要从数据库中选择随机产品的功能.
我们的想法是,每当网页加载时,随机产品的广告就会有所不同!
使用PHP,我将如何做到这一点?
tbl_products
id code title stock cost rrp
这些是我需要从数据库访问的行.
谢谢
最直接的解决方案是:
SELECT *
FROM tbl_products
ORDER BY
RAND()
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
然而,随着产品数量的增长,这变得不那么有效.
此解决方案:
效率更高,但仍需要全表扫描.
如果您的产品ID或多或少均匀分布,请使用以下命令:
SELECT p.*
FROM (
SELECT
(
(
SELECT MAX(id)
FROM tbl_products
) -
(
SELECT MIN(id)
FROM tbl_products
)
) * RAND() AS rnd
) q
JOIN tbl_products p
ON id >= rnd
ORDER BY
id
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
如果ids之间存在差距,则会更频繁地选择大间隙后的产品.
您可以使用特殊的唯一列来代替id,您可以在cron作业中填充无间隙.
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |