首页
留言板
友链
关于
Search
1
内测“合金弹头”嘿嘿
1,067 阅读
2
Nginx搭建一个简易的图床
1,028 阅读
3
Kettle循环遍历结果集作为参数传入转换
959 阅读
4
Maven3.3.9的安装与配置
520 阅读
5
Maven打包插件与idea
486 阅读
知识库
好奇猫
日常说
笔记本
登录
/
注册
Search
标签搜索
maven
Spring
vue
Java
Java代码
前端
idea
帆软
MySQL
git
CSS
游戏
Bootstrap
生活
网上冲浪
邮件配置
说说
Nginx
Excel
数据库调优
龙流
累计撰写
61
篇文章
累计收到
27
条评论
首页
栏目
知识库
好奇猫
日常说
笔记本
页面
留言板
友链
关于
搜索到
1
篇与
数据库调优
的结果
2022-03-21
实际使用数据库建表时varchar类型使用的区别
一直有纠结过一个问题,不知道其他同学有没有,实际开发中数据库字段类型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关键字减少锁,但会造成重建时间加长.
2022年03月21日
130 阅读
0 评论
0 点赞