实际使用数据库建表时varchar类型使用的区别
侧边栏壁纸
  • 累计撰写 47 篇文章
  • 累计收到 10 条评论

实际使用数据库建表时varchar类型使用的区别

龙流
2022-03-21 / 0 评论 / 36 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年03月23日,已超过147天没有更新,若内容或图片失效,请留言反馈。

一直有纠结过一个问题,不知道其他同学有没有,实际开发中数据库字段类型varchar类型是最好用的,不会出现类型不符的异常;管它是int类型还是double、date类型都能当字符占用类型存储。
这真的是一个“坏味道”要改一改了:
1、从字段类型的执行效率上,int最高,varchar最低。

例如状态类型字段,使用char或者varchar是不可取的,int类型更容易建立索引和进行检索,毕竟数字类型是数据库检索的基础,char类型的毕竟需要经过转换,而varchar就更复杂了,其排序不仅需要转换和计算,还需要访问和遵循数据库的排序规则(实际上char也需要排序规则),而消耗的资源也更大。

2、占用空间大小不同

例如用varchar 来存储年月日,那么需要10个字节,而date类型只需4个字节,而datetime类型也只需要8个字节,都小于varchar类型

3、建立索引问题

频繁改动的字段类型建议使用varchar。varchar类型的字段用来建立索引容易产生的索引碎片
简单理解索引碎片是空间利用率不足

SQL索引与碎片

=>删除索引并重建
这种方式并不好.在删除索引期间,索引不可用.会导致阻塞发生。而对于删除聚集索引,则会导致对应的非聚集索引重建两次(删除时重建,建立时再重建).虽然这种方法并不好,但是对于索引的整理最为有效

=>使用DROP_EXISTING语句重建索引
为了避免重建两次索引,使用DROP_EXISTING语句重建索引,因为这个语句是原子性的,不会导致非聚集索引重建两次,但同样的,这种方式也会造成阻塞

=>如前面文章所示,使用ALTER INDEX REBUILD语句重建索引
使用这个语句同样也是重建索引,但是通过动态重建索引而不需要卸载并重建索引.是优于前两种方法的,但依旧会造成阻塞。可以通过ONLINE关键字减少锁,但会造成重建时间加长.

0

评论 (0)

取消