如何优化更新语句

发布于 2025-01-12 04:29:32 字数 835 浏览 4 评论 0原文

我正在 MySQL 中维护 Mike Hillyer 分层数据。

Q) 如何优化下面的更新语句。平均需要大约 500 毫秒

update AGENCY_TREE set RGT = RGT - 2  where RGT > 2;

该表包含大约 15k 数据。结构如下

CREATE TABLE IF NOT EXISTS `user_tree` (
  `USER_ID` bigint NOT NULL COMMENT 'The user ID',
  `LFT` bigint NOT NULL COMMENT 'Left boundary of all children',
  `RGT` bigint NOT NULL COMMENT 'Right boundary of all children',
  PRIMARY KEY (`USER_ID`),
  UNIQUE KEY `U_USER_TREE_LFT` (`LFT`),
  UNIQUE KEY `U_USER_TREE_RGT` (`RGT`),
  CONSTRAINT `FK_USER_TREE_AGENCY` FOREIGN KEY (`USER_ID`) REFERENCES `agency` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='USER hierachy tree';

I am maintaining the Mike Hillyer Hierarchical Data in MySQL.

Q) How to optimize the update statement below. It will take average about 500 Milliseconds

update AGENCY_TREE set RGT = RGT - 2  where RGT > 2;

The table consist around 15k data. Structure as below

CREATE TABLE IF NOT EXISTS `user_tree` (
  `USER_ID` bigint NOT NULL COMMENT 'The user ID',
  `LFT` bigint NOT NULL COMMENT 'Left boundary of all children',
  `RGT` bigint NOT NULL COMMENT 'Right boundary of all children',
  PRIMARY KEY (`USER_ID`),
  UNIQUE KEY `U_USER_TREE_LFT` (`LFT`),
  UNIQUE KEY `U_USER_TREE_RGT` (`RGT`),
  CONSTRAINT `FK_USER_TREE_AGENCY` FOREIGN KEY (`USER_ID`) REFERENCES `agency` (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='USER hierachy tree';

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文