首页
学习
活动
专区
圈层
工具
发布

如何更快随机UPDATE?

导读 UPDATE + RAND()怎么可以更快? 有时候,我们随机更新几行数据,可能会下意识的直接写成下面的SQL: [yejr@imysql]> UPDATE t1 SET c1 = ?...关注我网站(http://imysql.com)的同学,可能还记得我以前还写过一个关于随机排序的分享:[MySQL优化案例]系列 — RAND()优化。...可以借鉴这篇文章的思路,把上面的SQL用JOIN改造一下: [yejr@imysql]> EXPLAIN UPDATE t1, (SELECT ROUND(RAND() * (SELECT MAX(id...不过,上面这种多表UPDATE(Multiple-table UPDATE)有局限性,就是只能更新一行记录,不能同时更新多行,所以也可以改写成下面的SQL: [yejr@imysql]> set @rnd_id...延伸阅读 [MySQL优化案例]系列 — RAND()优化 https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_rand

75410

如何更快随机UPDATE?

导读 UPDATE + RAND()怎么可以更快? 有时候,我们随机更新几行数据,可能会下意识的直接写成下面的SQL: [yejr@imysql]> UPDATE t1 SET c1 = ?...WHERE id = ROUND(RAND() * 102400); 不过你可能不知道,这个SQL的效率极低,需要进行全表扫描,因为无法使用索引: [yejr]@[imysql.com]> EXPLAIN UPDATE...102400); *************************** 1. row *************************** id: 1 select_type: UPDATE...把之前写的SQL用JOIN改造一下: [yejr@imysql]> EXPLAIN UPDATE t1, (SELECT ROUND(RAND() * (SELECT MAX(id) FROM t1))...不过,上面这种多表UPDATE(Multiple-table UPDATE)有局限性,就是只能更新一行记录,不能同时更新多行,所以也可以改写成下面的SQL: [yejr@imysql]> set @rnd_id

86330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库update 随机时间-mysql多库表关联问题症结

    但是数据库update 随机时间,四月初统计上个月的月报的时候,发现到处全部的数据需要花费超过12个小时的时间。   10几分钟的到处已然让人无法接受了,12个小时简直要了人命!   ...二、导出格式的要求   1、每个渠道有各自的导出模板;   2、每个模板不同数据库update 随机时间,模板中的字段分散在近十张表中。   三、为什么需要那么多库表的关联?   ...以下是以月为分区修改的表结构: ALTER TABLE store_rst PARTITION BY RANGE COLUMNS (update_time) ( PARTITION...根本原因在于: 永远用小结果集驱动大记录集,因为在mysql中,只有Nested Join一种Join方式,就是说mysql的join是通过嵌套循环来实现的。...《高性能mysql》、《高可用mysql》有时间一定要好好研读(说给自己)。

    2.3K20

    MySQL 案例:Update 死锁详解

    死锁的两个语句如下: UPDATE tbl_deadlock SET col1 = 1, col2 = 1, update_time = 1603685523 WHERE (id1 = 6247476)...AND (id2 = 74354) UPDATE tbl_deadlock SET col1 = 1, col2 = 1, update_time = 1603685523 WHERE (id1 =...MySQL 的锁机制天然具备这个条件。 请求与保持条件:资源请求被阻塞时,已持有的资源不会被释放。 MySQL 不触发死锁回滚,且未进入 lockwait_timeout 的时候,具备这个条件。...MySQL 的锁机制天然具备这个条件。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系,通常会表现为有向环。...由于 MySQL 的锁机制的原因,只需要判断出两个 SQL 语句的锁存在循环等待,那么死锁的条件就会成立了。

    16.4K175
    领券