这段时间在外面实施一个项目,发现表结构中一个字段(是主键)位数很不够用,表中只有20位,而实际上20位根本不够用,其实40位差不多,但是当时我不知道怎么搞得,一发狠,由20位改成了100位(当然,其他用到该字段的表中也作了改动)。后来,被项目经理知道了,被很批了一顿。说我改得太长了,将来会影响系统性能。
我想请教一下,主键位数太长到底会不会影响系统性能?有哪些影响?
注意:(我所改动的这个表中这个主键,在其他很多表(至少9张表)中都用到了。)
30 分钟快快乐乐学 SQL Performance Tuning
http://www.cnblogs.com/WizardWu/archive/2008/10/27/1320055.html
1、数据库设计与规划
● Primary Key 字段的长度尽量小,能用 small integer 就不要用 integer (如: 若确定此表的数据量不会超过 32000 条记录)。
例如员工数据表,若能用员工编号当主键,就不要用身分证号码。
否则会占用过多的 index 和硬盘空间 (数据量越多,爆增越快),
index 长度过长,也会影向查找、JOIN 时 index 的搜寻性能。
2、适当地建立索引
● 用来建立索引的字段,长度不宜过长,不要用超过 20 个 Byte 的字段,如:地址。
参考书籍:
SQL Server 2005 Performance Tuning 性能调校 (台湾书籍,有简体中文翻译本):
作者:胡百敬、姚巧枚、刘承修
有影响,但不会非常明显。如果真想优化就用自增长的Identity当主键,原来的主键做一个Unique约束。
你把字段从40设为100,性能上不会有什么影响,即使有影响也是比较小的,可以忽略不计