嗯,我对数据库架构了解不多,但我真的不明白 CTO 的想法,但他坚持使用字符作为我们使用的所有表的主键的列类型。但是主键仍然看起来像这样 - > 1,2,3...等等。它们是数字的。所以我使用整数 + auto_increment 合成 PK
但是 CTO 说这很糟糕,因为他不能LIKE
在 PK 上使用条件发出查询?!
- PK 使用字符是否可以,尤其是当您的 PK 是数字时?
- 在PK上使用like条件是否正确?
PS - 因此,序列 CTO 不是自动递增/触发,而是发出选择查询,从表中获取最大值,然后加 1,然后将该值转换为字符串,然后存储它。
编辑
感谢您的帮助!但我需要让他相信这将是一场灾难。我只被告知这(在这种情况下为字符 4 PK)是一个坏主意。他的论点是……
1、角色PK不会占用太多空间。
2. 如果您使用 int 类型 PK,数据库查询优化器将不得不重新读取您的查询,因为您将不得不发出类似
"select * from employee where name like 'somename'
and的问题
Select * from employee where id = 6
。
因为 where 子句发生了变化。
他强烈认为我们使用的东西就像
"select * from employee where @columnName like @value"
他说的那样,查询优化器会运行得更好。
我怎样才能证明或给他一些改变主意的正当理由?
谢谢 : )