sqle icon indicating copy to clipboard operation
sqle copied to clipboard

增加规则

Open Sharkzeng opened this issue 3 years ago • 0 comments

规则 一 禁止使用TIMESTAMP字段 规则 二 添加字段 不带AFTER, BEFOR 规则 三 建议用BIGINT 代替DECIMAL 规则 四 行定义大小不超过 N 字节 规则五 SELECT 不能有ORDER BY 规则六 JOIN字段类型不一致 规则七 IN的值必须少于 N 个

规则八 VARCHAR 长度 不超过 N
规则九 建议建表表不能超过 N个字段 规则十 建表 必须含字段 CREATE_TIME, UPDATE_TIME 且默认值 DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6)

背景 1 TIMESTAMP 有2038年限制 并且时区转换 2 带AFTER 的DDL 会COPY 整表 3 DECIMAL性能不高 4 INNODB 默认16K 限制行最大值是8KB 5 ORDER BY 对MYSQL性能影响大, 不太好优化, 可以把排序前置到 后端,前端,客户端 6 JOIN字段类型不一致,会导致隐式转换 7 IN (......) 数量超过某个阀值 性能下降 8 超过255 多出的会存放在溢出页 9 避免表字段太多 10 避免后期对数据生命周期管理不便

Sharkzeng avatar Aug 10 '22 02:08 Sharkzeng

需要确认下以上规则我们是否已有,没有的话建议实现

sjjian avatar Aug 11 '22 08:08 sjjian

针对规则二:mysql 使用alter语法添加字段,如果想指定位置,只能使用first和after指定字段位置,没有before。因此,将规则二更新为“alter字段禁止使用first,after” mysql文档链接

taolx0 avatar Aug 16 '22 05:08 taolx0

规则8已经有了

sjjian avatar Aug 18 '22 03:08 sjjian

规则10建议拆分成2条规则

sjjian avatar Aug 18 '22 03:08 sjjian

规则9已经在企业版实现,后期考虑开放到社区版

sjjian avatar Aug 18 '22 03:08 sjjian

规则8已经有了

也在企业版中

taolx0 avatar Aug 18 '22 06:08 taolx0

@Sharkzeng 规则四主要的应用场景是啥?

taolx0 avatar Aug 24 '22 05:08 taolx0

https://github.com/actiontech/sqle/issues/794

sjjian avatar Aug 26 '22 08:08 sjjian