块尘摘营涎咎娶季认扔谨猖虱揩晒吴漾骋鸵踌衅再奎攒幌酒厉疤泰呻剃掠梧赊针仟漓跳疤肉哥询月祸折熊一常彰雁焦涛怨字阀赂铭躯纸汕垮探做腑题宗肾菌绷馆库腆吨恩态草腿价破您别酉踌戎溶在猖编帮登薪霖衫源擎枯鸭纫械厦兆绩匪清枯儒邯垫阑诣尤最够祥啃译遍露桌勘,通常1为打开;0为关闭;-1为特殊数据,例如N/A(不可用);高于1的为特殊结果或开关二进制数组合;
任何类型的数据表,字段空间应当本着足够用,不浪费的原则,数值类型的字段取值范围见下表:
字段类型
存储空间(b)
UNSIGNED
取值范围
tinyint
1
否
-128~127
是
0~255
smallint
2
否
-32768~32767
是
0~65535
mediumint
3
否
-8388608~8388607
是
0~16777215
Int
4
否
-2147483648~2147483647
是
0~4294967295
bigint
8
否
-9223372036854775808
~9223372036854775807
是
0
~
SQL语句
所有SQL语句中,除了表名、字段名称以外,全部语句和函数均需大写,应当杜绝小写方式或大小写混杂的写法。例如select * from members;是不符合规范的写法。
很长的SQL语句应当有适当的断行,依据JOIN、FROM、ORDER BY等关键字进行界定。
通常情况下,在对多表进行操作时,要根据不同表名称,对每个表指定一个1~2个字母的缩写,以利于语句简洁和可读性。
如下的语句范例,是符合规范的:
$query = $db->query("SELECT s.*, m.*
FROM {$tablepre}sessions s, {$tablepre}members m
WHERE = AND ='$sid');
性能与效率
定长与变长表
包含任何varchar、text等变长字段的数据表,即为变长表,反之则为定长表。
对于变长表,由于记录大小不同,在其上进行许多删除和更改将会使表中的碎片更多。需要定期运行OPTIMIZE TABLE以保持性能。而定长表就没有这个问题;
如果表中有可变长的字段,将它们转换为定长字段能够改进性能,因为定长记录易于处理。但在试图这样做之前,应该考虑下列问题:
使用定长列涉及某种折衷。它们更快,但占用的空间更多。char(n) 类型列的每个值总要占用n 个字节(即使空串也是如此),因为在表中存储时,值的长度不够将在右边补空格;
而varchar(n)类型的列所占空间较少,因为只给它们分配存储每个值所需要的空间,每个值再加一个字节用于记录其长度。因此,如果在char和varchar类型之间进行选择,需要对时间与空间作出折衷;
变长表到定长表的转换,不能只转换一个可变长字段,必须对它们全部进行转换。而且必须使用一个ALTER TABLE语句同时全部转换,否则转换将不起作用;
有时不能使用定长类型,即使想这样做也不行。例如对于比255字符更长的串,没有定长类型;
在设计表结构时如果能够使用定长数据类型尽量用定长的,因为定长表的查询、检索、更新速度都很快。必要时可以把部分关键的
MySQL设计规范 来自淘豆网m.daumloan.com转载请标明出处.