网站开发效率,网站制作 太原,怎么查网站有没有做推广,简述企业网站建设的目的有哪些表的设计字段尽量设置not null#xff0c;mysql的null值和空字符串不一样#xff0c;null值占用空间#xff0c;空字符串不占用空间。Null值占用空间#xff0c;比较时会参与比较#xff0c;但b树索引不会存储null值#xff0c;因此当索引的字段包含null值#xff0c;效…表的设计字段尽量设置not nullmysql的null值和空字符串不一样null值占用空间空字符串不占用空间。Null值占用空间比较时会参与比较但b树索引不会存储null值因此当索引的字段包含null值效率会下降。一般没有业务因素影响采用数值型的自增长列作为主键。Mysql的字段设计需要集约化越小的占用存储空间越好能数值不字符能日期不字符。注意Mysql的varchar类型要计算好长度因为mysql在表被查询后会把表信息缓存到内存中在内存中申请是按照最大长度申请。将不常用的字段或大字段从主表拆分出来放到子表通过主键关联访问对于核心访问频度极高的表需要反范式设计增加冗余字段减少与其它表的join操作。索引的设计主键字段尽量短数值型是较好的选择。Mysql innodb单列索引默认情况下限制长度767使用utf8字符集长度限制为255。当查询包含的条件和字段很少时可以创建覆盖索引。这样数据可以全部在索引中获得将不再回表。当需要在长文本字段上创建索引时可以考虑增加一个虚拟hash列采用crc32计算一个hash值针对这个列创建索引。只用这个索引做等值查询索引的空间占会小很多。组合索引在多列上创建单列索引在一个列上创建。查询使用索引的条件不同一般组合索引需要按照“最左前缀”来执行查询并不是每个列都需要覆盖只是从左边的列开始组合。例如有索引key(a,b,c)where axx and bxx and cxxx 此语句可以用到索引where bxx and axx and cxxx 同上顺序没有关系同样能用到索引where axx and bxx 可以用到索引where axx and cxx 可以用到索引where bxx and cxx 用不到索引 where bxx 用不到索引 where cxx 用不到索引Innodb只支持索引组织表为了提高系统的性能增加查询速度所以要建立索引.好处 1) 通过创建唯一性索引可以保证数据库表中每一行数据的唯一性2) 大大加快数据的检索速度3) 可以加速表和表之间的连接特别是在实现数据的参考完整性方4) 在使用分组和排序子句进行数据检索时同样可以显著减少查询中分组和排序的时间开发管理项目中的索引应用使用到普通索引、唯一索引、主键索引、组合索引.例如1)sp_issue.product产品字段时常做为查询条件设置字段不为NULL且增加索引ALTER TABLE sp_issue MODIFY product VARCHAR(100) NOT NULL;ALTER TABLE sp_issue ADD INDEX INX_PRODUCT (PRODUCT);2)人员权限表sp_user_priv无主键留着普通索引建联合主键.alter table sp_user_priv add constraint pk_sp_user_priv primary key (user_code,priv_type,priv_value);序号常用Oracle数据类型对应MySQL数据类型OracleMySQL1TIMESTAMP(6)DATETIME(6)或timestamp(6)2NUMBERint or bigint3CHARchar4CLOBtext or varchar5DATEdatetime6RAWchar7VARCHAR2vharchar8BLOBblob数值型字段尽量不用字符类型存储原因UTF-8 下mysql下 VARCHAR(20) ;表明字段可以存放20个字符若中文则是占用60个byte(1中文3BYTE)若英文或者数字则为占用20个byte。INT 大小为4 字节(定义) 存储的数值范围是 (04 294 967 295) 即只要存储的数值是这个范围内永远都是占用4个BYTE。假设 存放 1000这样一个值 如果存放到数据类型VARCHAR中 那么就是 1000个byte,就是1kb大小而存放到 int中就只是占用4个byte即只有0.004KB差距很大。字段不设置为NULL当字段时常做为查询条件时设置改字段不为NULL可以设置默认值来填充方式.原因1)MySQL的NULL不等于空字符串WEB开发的时候如果有的地方插入记录是指定空字符串有的地方插入记录没有指定值查询’’的时候就会过滤掉为(NULL)的数据2)索引不会包含有NULL值的列 只要列中包含有NULL值都将不会被包含在索引中复合索引中只要有一列含有NULL值那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL例如设置sp_issue.product 不为NULLALTER TABLE sp_issue MODIFY product VARCHAR(100) NOT NULL;2.1 数值型字段尽量不用字符类型存储原因UTF-8 下mysql下VARCHAR(20) ;表明字段可以存放20个字符若中文则是占用60个byte(1中文3BYTE)若英文或者数字则为占用20个byte。INT 大小为4字节(定义) 存储的数值范围是(04 294 967 295) 即只要存储的数值是这个范围内永远都是占用4个BYTE。假设 存放 1000这样一个值 如果存放到数据类型VARCHAR中 那么就是1000个byte,就是1kb大小而存放到 int中就只是占用4个byte即只有0.004KB差距很大。