« 先报身高? 还是体重? »
DBA » http://www.anysql.net/dba/is_column_order_matter.html 2008-03-03“我身高1.76, 体重85kg”与”我体重85kg, 身高1.76″有什么不同? 在关系数据库理论中, 确明地写着实体属性的顺序并不重要, 因此在我的DBDiff程序(表结构比较)中是不比较列的顺序的. 如果说硬要说列的顺序有关系, 那只能是说明应用程序代码习惯不够好.
INSERT INTO tablename VALUES (…)
只有Insert语句不带字段列表的情况下, 才与列的顺序有关系, 但这不是一个好的习惯. 比方在多表关联时, 选择列时不加表名就不是个好习惯. 去年参加年会时, 淘宝的朋友曾提及以前就遇到过这样的问题, 在一个不太重要的系统中, 关联的两个表一开始所有字段名都不同, 后来有一天在一个表上加了和另一个表中某列同名的列, 这时应用出问题了.
SELECT A.COL1, B.COL2, … FROM A, B WHERE …
很多都是简单的事, 如果一直坚持了就很好, 如果不坚持, 有时就是很坏的事. 要让一个人坚持, 那还比较容易, 要让一个队伍坚持, 就有些难了, 让一个IT业流动性较大的队伍坚持, 就更难了.


不错,我也要求我们开发人员在写INSERT语句的时候要加上字段名,这样在做调整表结构的时候程序在插入数据不至于出错。
51job的朋友开始用我的dbdiff程序了.
好代码该依靠规范,而不是习惯,好习惯也会因为人的不同而不统一。
INSERT INTO tablename VALUES (…)这种代码,peer review的时候就该退回去重写了,绝对不能进production。
规范还是习惯,很难说了,规范久了就是习惯了。