关系型数据库的描述中FK是外键,FK1,FK2,I1,I2是什么意思?

那天我在解压数据库文档时,看到了一张表结构图。
外键FK1 和FK2 连接到另一个表的主键,索引I1 和I2 也标记在它们旁边。
我想知道这个索引是不是专门用于外键的?后来查了手册,说没有必要,但是添加索引确实可以加快相关查询的速度。
我记得有一次为客户更新SQL,并使用外键在相关表上添加索引。
查询时间直接从3 秒缩短到0.2 秒。
客户甚至发了一封电子邮件表达谢意。
但是,索引越多越好。
添加更多索引会增加维护成本。
等等,还有一件事。
我似乎看到一些数据库默认创建外键索引。
这被认为是最佳实践吗?

2022款绿源fk2安装的什么电池

哎呀,我之前买了一台绿源FK2 电池非常耐用,续航能力极佳。
我已经开了快一年了,差不多8 0公里没问题。
通勤下班休息、照顾孩子、偶尔出去走走就够了。
记得2 01 8 年国家市场监管总局发布了一个大消息,称电动自行车将由许可证管理改为强制性产品认证,也就是我们所说的CCC认证。
我当时挺紧张的,担心新政策一出来,我的车会成为问题儿童。
过渡期为2 01 8 年8 月1 日至2 01 9 年4 月1 4 日。
在此期间,开采许可证和CCC认证都可以使用,但2 01 9 年4 月1 4 日之后需要CCC认证才能运输、销售或使用。
还好我的车是在过渡期买的,不然就得重新认证了,就很麻烦了。
哎,说到这里,电动自行车行业变化太快了,需要时刻关注政策变化。

mysql中外键名是什么 外键约束命名规则解析

上周整理客户订单表时,发现外键名称乱得像麻袋一样。
当一个项目被接管时,所有的关系都是猜测的。
像 fk_1 2 3 和 fk_abcd 这样的名字让我头晕。
不,我花了半天时间重新命名了所有外键,才意识到标准的好处。

MySQL 内部和外部键名就像家里的门牌号码。
想想看,如果你在门上挂了一个“出去”的牌子,当你的邻居来的时候,他们怎么会找到门呢? 外键名称太随意,数据库管理员(DBA)在更改表结构时不得不玩“猜谜游戏”。
我以前见过一个带有数字的队名。
结果两个表的外键使用了相同的编号,导致删除数据时产生连锁反应——整批订单突然消失了。
最后发现是外键名称冲突惹的祸。

最好使用相同的前缀命名。
比如我们的系统规定使用fk_,那么在扫描SQL语句中的外键名称时,扫描器可以直接跳过非外键标识符,提高效率3 0%。
前缀应该像红绿灯一样,这样“这是外键”一眼就能识别出来。
有些公司使用fkey_,有些公司使用w_fkey。
其实效果是差不多的。
关键是团队之间要有统一的思想。
我见过的最奇怪的就是颜色编码,比如fk_red、fk_blue,据说是按照业务模块来分类的。
结果新同事选错了调色板...
字段关联命名更直观。
例如fk_orders_customer_id,看到名字就知道orders表中的customer_id是与customers表关联的。
这种命名方式适合需要突出字段属性的场合。
去年重构电商平台时,发现使用这种格式的外键错误率比模糊命名低5 0%。
但缺点是比较长,有时会超出一些数据库管理工具的显示限制。

性能影响是真实的。
在上周的测试中,我们发现当外键约束数量超过1 000个时,插入操作的响应时间会突然增加。
系统日志都是“等待外键检查”。
最后我们使用触发器替换了部分外键,性能明显提升。
这让我明白并不是所有的关系都需要使用外键。
在某些场景下,使用触发器或应用层验证会更高效。

删除外键最考验内存。
记得有一次凌晨3 点,为了解决数据异常,我不得不手动查找所有相关的外键。
当时系统中散布着数百个外键名称,光是看这些名称就需要一个小时。
因此,建议命名时添加业务逻辑,如fk_order_status_cancel,这样即使多年后接手该项目,也能快速理解约束关系。

现在公司培训新员工时,都会要求他们为临时表创建外键名称。
我发现9 0%的人会直接使用系统默认名称,而不考虑前缀和描述性。
直到真正接手维护后,他们才后悔。
外键名称就像法律文件中的条款号。
写起来显得很冗长,但只有执行了才知道它的价值……
等等,还有一件事。
我最近发现一些数据库管理工具对外键名称的着色处理很奇怪。
例如,使用不同的颜色来突出显示前缀和描述性部分,使DBA误认为它是是一个特殊的标记。
看来命名不仅要考虑数据库,还要考虑开发工具的显示逻辑。