位置: 编程技术 - 正文

MySQL 建表的优化策略 小结(mysql建表的完整步骤)

编辑:rootadmin
目录 1. 字符集的选择 1 2. 主键 1 3. 外键 2 4. 索引 2 4.1. 以下情况适合于创建索引 2 4.2. 以下的情况下不适合创建索引 3 4.3. 联合索引 3 4.4. 索引长度 4 5. 特殊字段 4 5.1. 冗余字段 4 5.2. 分割字段 4 5.3. BLOB和CLOB 5 6. 特殊 5 6.1. 表格分割 5 6.2. 使用非事务表类型 5 1. 字符集的选择 如果确认全部是中文,不会使用多语言以及中文无法表示的字符,那么GBK是首选。 采用UTF-8编码会占用3个字节,而GBK只需要2个字节。 2. 主键 尽可能使用长度短的主键 系统的自增类型AUTO_INCREMEN, 而不是使用类似uuid()等类型。如果可以使用外键做主键,则更好。比如1:1的关系,使用主表的id作为从表的主键。 主键的字段长度需要根据需要指定。 tinyint 从 2的7次方-1 :- 到 smallint 从 2的次方-1 :- 到 mediumint 表示为 2的次方-1: 从 - 到 int 表示为 2的次方-1 bigint 表示为 2的次方-1 在主键上无需建单独的索引,因为系统内部为主键建立了聚簇索引。 允许在其它索引上包含主键列。 3. 外键 外键会影响插入和更新性能,对于批量可靠数据的插入,建议先屏蔽外键检查。 对于数据量大的表,建议去掉外键,改由应用程序进行数据完整性检查。 尽可能用选用对应主表的主键作作为外键,避免选择长度很大的主表唯一键作为外键。 外键是默认加上索引的 4. 索引 创建索引,要在适当的表,适当的列创建适当数量的适当索引。在查询优先和更新优先之间做平衡。 4.1. 以下情况适合于创建索引 在经常需要搜索的列上,可以加快搜索的速度 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间 在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。 4.2. 以下的情况下不适合创建索引 对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。 对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。 当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。 如果表数据很少,比如每个省按市做汇总的表,一般低于,且数据量基本没有变化。此时增加索引无助于查询性能,却会极大的影响更新性能。 当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当对修改性能的要求远远大于检索性能时,不应该创建索引。 4.3. 联合索引 在特定查询里,联合索引的效果高于多个单一索引,因为当有多个索引可以使用时,MySQL只能使用其中一个。 在查询里,同时用到了联合索引包含的前几个列名,都会使用到联合索引,否则将部分或不会用到。比如我们有一个firstname、 lastname、age列上的多列索引,我们称这个索引为fname_lname_age。当搜索条件是以下各种列的组合时,MySQL将使用 fname_lname_age索引: firstname,lastname,age firstname,lastname firstname 从另一方面理解,它相当于我们创建了(firstname,lastname,age)、(firstname,lastname)以及(firstname)这些列组合上的索引。 4.4. 索引长度 对于CHAR或者Varchar的列,索引可以根据数据的分布情况,用列的一部分参与创建索引。 create index idx_t_main on t_main(name(3)); 这里就是指定name的前三个字符参与索引,而不是全部 最大允许的长度为个字节,对已GBK编码则是个汉字 5. 特殊字段 5.1. 冗余字段 就是用空间换取时间。如果大表查询里经常要join某个基础表,且这个数据基本不变,比如人的姓名,城市的名字等。一旦基础表发生变动,则需要更新所有涉及到的冗余表。 5.2. 分割字段 如果经常出现以某个字段的某个局部进行检索和汇总(substring()),可以考虑将这一部分独立出来。 比如统计姓名里,每种姓氏的人数,可以考虑实现就按照姓和名分别保存,而不是一个字段。 还有就是某些上下级结构的实现,也可以考虑将不同的级别放在不同的字段里。 5.3. BLOB和CLOB 此类字段一般数据量很大,建议设计上数据库可以只保存其外部连接,而数据以其它方式保存,比如系统文件。 6. 特殊 6.1. 表格分割 如果一个表有许多的列,但平时参与查询和汇总的列却并不是很多,此时可以考虑将表格拆分成2个表,一个是常用的字段,另一个是很少用到的字段。 6.2. 使用非事务表类型 MySQL支持多种表类型,其中InnoDB类型是支持事物的,而MyISAM类型是不支持的,但MyISAM速度更快。对于某些数据,比如地理行政划分,民族等不可能参与事务的数据,可以考虑用MyISAM类型的表格。 但InnoDB的表,将无法用MyISAM表数据做外键约束了。 MyISAM表参与的事务,其InnoDB表可以正常的提交和回滚,但不影响MyISAM表。

推荐整理分享MySQL 建表的优化策略 小结(mysql建表的完整步骤),希望有所帮助,仅作参考,欢迎阅读内容。

MySQL 建表的优化策略 小结(mysql建表的完整步骤)

文章相关热门搜索词:mysql建表问题,mysql建表的完整步骤,mysql建表问题,mysql优化表结构,mysql建表问题,mysql 建表语句 及完整案例,mysql优化表结构,mysql建表问题,内容如对您有帮助,希望把文章链接给更多的朋友!

批量替换 MySQL 指定字段中的字符串 批量替换的具体语法是:UPDATE表名SET指定字段=replace(指定字段,'要替换的字符串','想要的字符串')WHERE条件;如果你想把article表中ID小于的记录,content

mysql4.0升级到mysql5(4.1),解决字符集问题 1、从4.0中导出表mysqldump?no-data-uroot-pdatabasestruct.sql2、导出数据mysqldump?no-create-info=true?extended-insert=false-uroot-pdatabasedata.sql3、用vi编辑struct.sql,使用最末行

MySQL 随机密码生成代码 DELIMITER$$CREATEFUNCTION`t_girl`.`func_rand_string`(f_numtinyintunsigned,f_typetinyintunsigned)RETURNSvarchar()BEGIN--Translatethenumbertoletter.--No1standsforstringonly.--No2standsfornumberonly.--

标签: mysql建表的完整步骤

本文链接地址:https://www.jiuchutong.com/biancheng/312507.html 转载请保留说明!

上一篇:mysql 发生系统错误1067的解决方法(MySQL发生系统错误2和5)

下一篇:批量替换 MySQL 指定字段中的字符串(批量替换多个word文档的同一内容)

  • 加计扣除10%进项税会计分录 申报表
  • 什么企业的纳税最多
  • 纯外贸企业出口到运费可以抵扣吗
  • 非增值税应税项目可以抵扣进项税吗
  • 向投资者分配的现金股利如何做账
  • 营业执照办理税务登记需要什么资料
  • 税控盘和税控钥匙一样吗
  • 企业注销增值税留抵可以退吗
  • 新会计准则下具体会计准则对银行的影响不包括
  • 企业所得税申报表A类
  • 技术服务费怎么开票税率
  • 房地产项目结转条件
  • 外经证预缴税款之后剩下的税款交到哪呢
  • 周转材料调拨调入单位如何做账
  • 收到实收资本要交什么税
  • 纳税人开具发票服务卡到期限了怎么办?
  • 个体户要申报哪些报表
  • 股权转让如何避免缴纳个税
  • 视频制作费属于劳务费吗
  • 税务小规模定律是什么意思
  • 个体户交税起征点 2023年
  • 工会是否具有有法律效力
  • 企业购进货物若发生下列事项,其增值税进项税额
  • 小规模季度划分
  • 工程施工会计核算方法
  • 工资里税前扣款是什么意思
  • 坏账收回的账务处理方法
  • 公司买结构性存款算投资吗
  • 财务管理和会计学哪个好就业
  • 自产自用设备税务处理
  • 股票质押得到的钱怎么算
  • 商贸流通企业的构成
  • 暂时关闭朋友圈
  • 如何解决无线网络连接问题
  • 会计谨慎性原则是指
  • 投资回报期限
  • 预收款项的减少
  • msmpeng.exe是什么进程
  • win10专业版下载教程
  • 异常发票怎么处理
  • php删除用户
  • 中秋买东西有讲究吗?
  • 苹果手机下载爱思极速版有什么影响
  • word的拼写检查总是变成法语
  • 印花税计提缴纳时间
  • 代扣代缴个税手续费返还会计分录
  • 10分钟搞定3种网红小吃
  • 发票金额和打款金额不一致怎么办
  • 质保金如果以后可以退吗
  • 小规模纳税人企业所得税2023
  • 学电脑网站
  • 个人所得税又是什么税种
  • 应收账款科目的期末余额
  • 汇算清缴后取得上一年发票
  • 现金收货款要填什么信息
  • 应付票据转应付账款分录
  • 固定资产出售账面价值计入什么科目
  • 专项补助资金的账务处理
  • 购置成本由什么构成
  • sql server的存储方式
  • 台式电脑二级网页打不开怎么办
  • Windows Server 2008下高效域管理体验
  • 在Linux系统中安装虚拟window
  • LINUX操作系统的主要组成部分有
  • 映泰主板bios设置内存频率
  • ubuntu终端终止正在执行的命令
  • WIN7快捷键冲突怎么解决
  • win81激活
  • linux安装glibc.i686
  • ExtJS4中的requires使用方法示例介绍
  • 安卓手机键盘怎么调出来
  • pip工具安装
  • Node.js中的包管理工具是什么
  • 安卓开发
  • Unity-DF 2048界面
  • jquery节点操作
  • js实现文本框输入功能
  • python 遍历数组
  • setBackgroundDrawable和setBackgroundColor的用法
  • 广西税务怎么交城乡养老保险
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设