ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### 表和字段命名 * 表和字段的命名以PHP编码中的命名规范为基本准则。 * 所有数据表名称,一律使用单数的形式,比如:命令为 user 而不是 users * 当几个表间的字段有关连时,要注意表与表之间关联字段命名的统一,如 ims\_rule\_keywords表中的rid与ims\_rules表中的rid。 #### 主键 每个表必须包含一个名称为**id**的自增主键。 #### 字段结构 * 基于效率的考虑,所有字段均不能为空,即全部NOT NULL,可以设置默认值来代替。 * 预计不会存储非负数的字段,例如各项id、统计数等,必须设置为UNSIGNED类型。UNSIGNED类型比非UNSIGNED类型所能存储的正整数范围大一倍,因此能获得更大的数值存储空间。 * 储开关、选项数据的字段,通常使用tinyint(1)非UNSIGNED类型,少数情况也可能使用enum()结果集的方式。tinyint作为开关字段时,通常1为打开;0为关闭;-1为特殊数据,例如N/A(不可用),高于1的为特殊结果或开关二进制数组合。 * 任何类型的数据表,字段空间应当本着足够用,不浪费的原则。MEMORY/HEAP类型的表中,尤其要注意规划节约使用存储空间,这将节约更多内存。 #### SQL语句 * 所有SQL语句中,除了表名、字段名称以外,全部语句和函数均需大写,应当杜绝小写方式或大小写混杂的写法。例如SELECT \* FROM ims\_members; * 很长的SQL语句应当有适当的断行,依据JOIN、FROM、ORDER BY等关键字进行界定。 * 通常情况下,在对多表进行操作时,要根据不同表名称,对每个表指定一个1~2个字母的缩写,以利于语句简洁和可读性。 #### 运算与检索 * 数值运算一般比字符串运算更快。例如比较运算,可在单一运算中对数进行比较。而串运算涉及几个逐字节的比较,如果串更长的话,这种比较还要多。 * 如果串列的值数目有限,应该利用普通整型或emum类型来获得数值运算的优越性。 * 更小的字段类型永远比更大的字段类型处理要快得多。对于字符串,其处理时间与串长度直接相关。一般情况下,较小的表处理更快。对于定长表,应该选择最小的类型,只要能存储所需范围的值即可。例如,如果mediumint够用,就不要选择bigint。对于可变长类型,也仍然能够节省空间。一个TEXT 类型的值用2 字节记录值的长度,而一个LONGTEXT 则用4字节记录其值的长度。如果存储的值长度永远不会超过64KB,使用TEXT 将使每个值节省2字节。 ### 性能优化 主要分为:表结构优化,索引优化,查询优化。取决于开发人员经验和个人能力。不详述。