gpt4 book ai didi

mysql - 创建一个偶数以使用随机数更新表列

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

我正在尝试使用 mySQL (mariaDB) 创建一个事件,其中每 1 小时它就会用随机数更新名为“itemRandomize”的列的每一行。我尝试了几件事,但要么得到错误语法,要么得到所需的 super 用户。

SET GLOBAL event_scheduler = ON;
CREATE EVENT main
DO
UPDATE main SET itemRandomize = FLOOR(RAND() * 100000000);

我的老式代码进行了更新(但没有随机化),类似于:

SET GLOBAL event_scheduler = ON;
CREATE EVENT itemupdater
ON SCHEDULE EVERY 1 HOUR STARTS '2013-10-26 06:36:00'
DO
UPDATE items SET shopStockCurrent=shopStockMax;

我还收到一条错误,提示 #1046 - 未选择数据库。我已经有一段时间没有做过这样的事情了。

最佳答案

让我们解决您的错误消息:

  • “需要成为 super 用户”- 事件需要由特权用户创建。
  • “未选择数据库”——然后在 CREATE EVENT 之前执行 USE some_db
  • “语法错误”——让我们看看详细信息。

您可以简单地将 RAND() 存储在 FLOAT 列(仅 4 个字节)中,而不是转换为整数。

您将如何处理随机数?

table 有多大? (任务会在一小时内完成吗?)

如果列 itemRandomize 已建立索引,这可能会加快速度:

ALTER TABLE DROP INDEX itemRandomize;
UPDATE ... SET itemRandomize ...;
ALTER TABLE ADD INDEX(itemRandomize);

我说“可能”是因为在最近的 MySQL 版本中,此类 ALTER 发生了重大变化(加速)。我不知道 MariaDB 是否已经 catch 了。

删除并重新创建索引可能是有益的,因为UPDATE的成本很高——它必须从索引中删除一个条目并插入一个新条目进入一个新的地方。

关于mysql - 创建一个偶数以使用随机数更新表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53345686/

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