DorisSQL

有没有大神帮忙优化下这个SQL,或者说看看写的对不对

CREATE TABLE dl_digital_purchase.qrtz_blob_triggers  (

  sched_name varchar(120) NOT NULL COMMENT '调度名称',

  trigger_name varchar(200) NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键',

  trigger_group varchar(200) NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键',

  blob_data VARBINARY NULL COMMENT '存放持久化Trigger对象'

)  

UNIQUE KEY(sched_name, trigger_name, trigger_group)

CONSTRAINT FOREIGN qrtz_blob_triggers_ibfk_1 KEY (sched_name, trigger_name, trigger_group) REFERENCES qrtz_triggers (sched_name, trigger_name, trigger_group) ON DELETE RESTRICT ON UPDATE RESTRICT

COMMENT  '代码生成业务表' 

DISTRIBUTED BY HASH(sched_name, trigger_name, trigger_group) BUCKETS 1

PROPERTIES ("replication_allocation" = "tag.location.default: 1")

SQL 落雨知清晨i 发布于 2024-10-12 09:07
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
华莉星宸Lv7资深互助
发布于2024-10-12 09:15

未使用过这个数据库,参考

Doris 建表示例https://blog.csdn.net/weixin_46039745/article/details/134553279

Doris--基础--3.5--SQL--建表https://blog.csdn.net/zhou920786312/article/details/129347297

最佳回答
0
用户k6280494Lv6资深互助
发布于2024-10-12 09:39

在优化这个 SQL 创建表语句时,我们需要注意几个方面:语句的清晰度、外键约束的定义方式、注释的明确性,以及数据库特性(如分布式特性)的合理使用。以下是对原始语句的优化版本:

sql复制代码

CREATE TABLE dl_digital_purchase.qrtz_blob_triggers (
sched_name VARCHAR(120) NOT NULL COMMENT '调度器名称,用于唯一标识调度任务',
trigger_name VARCHAR(200) NOT NULL COMMENT '触发器名称,对应qrtz_triggers表中的trigger_name字段',
trigger_group VARCHAR(200) NOT NULL COMMENT '触发器组名,对应qrtz_triggers表中的trigger_group字段',
blob_data VARBINARY(MAX) NULL COMMENT '用于存储持久化的触发器对象数据',
-- 设定复合唯一键  
UNIQUE KEY idx_unique_trigger (sched_name, trigger_name, trigger_group),
-- 定义外键约束,确保参照完整性  
CONSTRAINT fk_qrtz_blob_triggers_qrtz_triggers FOREIGN KEY (sched_name, trigger_name, trigger_group)
REFERENCES dl_digital_purchase.qrtz_triggers (sched_name, trigger_name, trigger_group)
ON DELETE RESTRICT ON UPDATE RESTRICT,
-- 表级注释  
COMMENT '存储持久化触发器对象的业务表,用于支持调度任务管理',
-- 如果使用的是支持分布式特性的数据库(如某些特定的NoSQL或分布式SQL数据库),则以下分布式设置可能是必要的  
-- 分布式特性设置,基于sched_name, trigger_name, trigger_group进行哈希分布  
DISTRIBUTED BY HASH(sched_name, trigger_name, trigger_group) BUCKETS 1,
-- 数据复制配置,根据特定数据库系统的配置要求来设置  
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
优化说明:
  1. 注释优化:增加了注释的详细性和明确性,使其更易于理解每个字段和键的用途。

  2. 数据类型优化:对于VARBINARY类型,增加了(MAX)以表示可以存储的最大数据量(具体数据库可能对VARBINARY(MAX)有不同的解释,如MySQL中可以使用BLOB或MEDIUMBLOB,视数据量而定)。

  3. 外键约束命名:外键约束的命名更直观,fk_qrtz_blob_triggers_qrtz_triggers表示这是qrtz_blob_triggers表到qrtz_triggers表的外键。

  4. 唯一键命名:唯一键添加了命名idx_unique_trigger,使其更易于在数据库管理或优化中引用。

  5. 指定字符集:为表指定了默认字符集utf8mb4,这是处理大多数国际化文本和表情符号的推荐字符集。

  6. 引擎指定:如果使用的是MySQL或兼容MySQL的数据库,指定了ENGINE=InnoDB来明确存储引擎。

注意:某些数据库特性(如DISTRIBUTED BY HASH和PROPERTIES)可能不是所有数据库系统都支持的。在使用这些特性时,请确保您的数据库系统支持这些语法,并根据具体的数据库文档进行调整。

  • 3关注人数
  • 118浏览人数
  • 最后回答于:2024-10-12 09:39
    请选择关闭问题的原因
    确定 取消
    返回顶部