首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏开源部署

    MySQL设计规范

    规范总结 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字【设计后逐一排查】 所有必须使用 Innodb 存储引擎,数据库和的字符集统一使用 ://dev.mysql.com/doc/mysqld-version-reference/en/keywords-8-0.html 建议在设计数据之后逐一排查有没有使用关键字。 数据库基本设计规范 1. 3. 如果一定要使用,建议把 BLOB 或是 TEXT 列分离到单独的扩展中,查询时一定不要使用 select * 而只需要取出必要的列,不需要 TEXT 列的数据时不要对该列进行查询。 3.

    2K10编辑于 2022-08-18
  • MySQL设计经验

    设计是每一个后端程序员都无法避开的一块转,而且这块砖一不小心就很容易烫手,本篇笔记就是喂了帮助大家在设计是能够轻松拿捏1.命名规范数据库名、字段名、索引名等都需要命名规范。 3.主键设计要合理主键的设计在数据库中非常重要,它用于唯一标识中的每一行数据,并且在数据操作和查询中起到关键作用。 在mysql中,varchar和char类型表示字符长度,而其他类型表示的长度都表示字节长度。 常见形式是在第三范式(3NF)的基础上,进一步冗余,从而减少关联。回顾下什么事数据库三范式(3NF)? 11.避免使用MySQL保留字如果库名、名、字段名等属性含有保留字时,SQL语句必须用反引号来引用属性名称,这将使得SQL语句书写、SHELL脚本中变量的转义等变得非常复杂。

    40410编辑于 2025-07-23
  • 来自专栏code人生

    MySQL设计

    存储大规模数据集需要仔细设计数据库模式和索引,以便能够高效地支持各种查询操作。 数据库设计结构设计垂直分割:将大的分割成多个相关性较小的,以减少单个的字段数量。这有助于提高查询效率和降低冗余。规范化:合理使用规范化,将重复数据抽取成独立的,以减小数据冗余。 索引设计主键索引:对主键字段创建索引,以提高检索速度。 CREATE FULLTEXT INDEX idx_fulltext ON main_data(text_field);3. 分库分如果数据量仍然巨大,可以考虑分库分策略,将数据划分到不同的数据库或中。4. 数据分区根据时间、范围等条件对数据进行分区,以提高查询效率。5.

    86210编辑于 2023-11-22
  • 来自专栏ops技术分享

    Mysql实例 设计

    二.设计表格 公司 公司名称 公司编号(自增主键) 电话号码 A 1001 xx B 1002 xx 广告 广告编号 有该广告的公司的编号(自增主键) 广告收费/点击一次 1 1001 2 2 1001 3 3 1002 2 点击 广告编号 该广告发送给浏览者的日期 1 101101 2 101102 1 101323 3 111232 三.查询 查都有哪些公司 直接查询公司的 公司名称 字段 select 公司名称 from 公司; 结果为A,B公司投放了广告 查A公司都放了哪些广告 先到公司,将公司名称=A的编号提取出来,然后将公司编号作为条件去广告表里找广告编号。 between 100000 and 199999; 最后做个计算即可 四.分析 结构设置 目前有3,基本满足业务需求,但未来查询更多,需要重新设计主键位置,结构。 当数据庞大,首当其冲的是点击,可能一天有几万次记录写入,这张将变得庞大,可以考虑将根据月份进行拆分。

    1.6K20发布于 2021-06-17
  • 来自专栏shigen的学习笔记

    mysql设计规范

    20个,的字段过多,中保存的数据可能会很大,查询的效率会降低。 大拆成小,让他们的主键相同即可。 尽可能使用 not null定义字段将字段设置成空字符串或者常量值not null防止出现空指针的问题null值存储也需要额外的空间,导致比较运算更为复杂,是优化器难以优化sqlnull值可能会导致索引失效设计索引有查询条件的字段 ,一般要加索引单的索引不超过5个区分度不高的字段,不添加索引(性别)避免索引失效的情况(mysql的内置函数)索引过多,选用联合索引优化不使用外键关联使用外键存在性能问题、并发死锁问题、使用起来不方便等 mysql对于存储过程、触发器等还不是很成熟,没有完善的出错记录处理,不建议使用sql编写的优化经验查询尽量不要使用select *查询的结果只要一条或者只要最大/小的一条记录,建议使用limit 1避免

    61930编辑于 2023-09-17
  • 来自专栏从码农的全世界路过

    MySQL的物理设计

    设计结构之后, 就需要进行物理设计, 将实体及属性映射到具体表和列. 而合理选择存储引擎和列类型也是数据库设计十分重要的一个环节. 物理设计包括, 命名规范, 存储引擎, 列字段选择, 主键设计以及主键生成算法. 一. 命名规范 首先在定义数据库,,字段时一定要公司的命名规范; 二. 无符号范围(unsigned) tinyint 1 byte -128, 127 0, 2^8-1 smallint 2 bytes -2^15, 2^15-1 0, 2^16-1 mediumint 3 如存储金钱相关数据, 那最好是decimal类型 列类型 存储空间 是否精确类型 float 4字节 否 double 8字节 否 decimal 每4字节存9个数字,小数点占1个字节 是 3.3 字符串类型 MySQL 主键选择 应选择尽可能小且顺序增长的数字类型, 并且主键可以与业务主键不同.

    1.6K10编辑于 2022-06-20
  • 来自专栏小工匠聊架构

    MySQL - 高效的设计MySQL

    应该对订单信息进行拆分,商品信息单独一张,订单项目一张,如下所示,拆分分成 3。 使用原则和设计规范 聊完范式,接下来我们看看 MySQL 使用中的一些使用原则和设计规范。 想要发挥 MySQL 的最佳性能,需要遵循 3 个基本使用原则 首先是需要让 MySQL 回归存储的基本职能:MySQL 数据库只用于数据的存储,不进行数据的复杂计算,不承载业务逻辑,确保存储和计算分离 一旦事务回滚,会导致资源占用时间过长 大 SQL,复杂的 SQL 意味着过多的的关联,MySQL 数据库处理关联超过 3以上的 SQL 时,占用资源多,性能低下 大批量,意味着多条 SQL 这些字段类型,在 MySQL 数据库的检索性能不高,很难使用索引进行优化。如果必须使用这些功能,一般采取特殊的结构设计,或者与程序结合使用其他的字段类型替代。

    3.9K12发布于 2021-08-17
  • 来自专栏SQL数据库开发

    MySQL中的设计优化

    MySQL数据库中,设计的优劣同样对性能有非常重要的影响。本节将介绍设计的优化方法,包括巧用多表关系、结构设计优化和拆分等。 NULL值不利于索引,MySQL难以优化可为NULL的列查询。当可为NULL的列被索引时,每个索引记录需要一个额外的字节用于标识其是否可空。如果某列计划要创建索引,要尽量避免将其设计成可为NULL。 这种方式的缺陷是不同中的数据量可能不均衡。 对id进行Hash取模运算,如要拆分成3,则用mod(id,3)获取0、1、2这3个值,每一行针对获取的不同值,将其放到不同的中。 如果user中的记录数超过了一定的量级,则需要把该中的记录拆分到多个中分别进行存储。这里采用对id进行取模3运算,每一条记录根据mod(id,3)的值是0、1还是2,分别存储到对应的中。 水平拆分效果如图3所示。 图3 水平拆分 不管用什么样的方式进行水平拆分,访问数据时要按照同样的规则去访问不同的数据

    1.3K10编辑于 2024-04-25
  • 来自专栏MySQL技术

    MySQL设计小技巧

    前言: 在我们项目开发中,数据库及设计可以说是非常重要,我遇到过很多库设计比较杂乱的项目,像名、字段名命名混乱、字段类型设计混乱等等,此类数据库后续极难维护与拓展。 我一直相信只有优秀的库设计才能发挥出MySQL最大的性能,前面有篇文章也分享了数据库的使用规范,本篇文章主要讲几个库设计的小技巧,希望对大家有所启发。 如果只是想表示年、日期、时间的还可以使用 year、 date、 time,它们分别占据 1、33 字节,而datetime就是它们的集合。 192.168.0.2')); # 相互转换 select INET_ATON('192.168.0.1'); select INET_NTOA(3232235521); 总结: 本篇文章分享了几个库设计及字段类型选取的建议 其实库设计是件复杂的事情,需要在项目前期多方人员共同规划讨论。还是那句话,只有优秀的库设计才能发挥出MySQL最大的性能。 — END —

    3.1K31发布于 2020-05-19
  • 来自专栏全栈程序员必看

    MySQL删除数据 MySQL清空命令 3种方法

    一、MySQL清空数据命令:truncate SQL语法: truncate table 名 注意: 不能与where一起使用。 truncate删除数据后是不可以rollback的。 二、MySQL删除命令:drop SQL语法: drop table 名; 或者是 drop table if exists 名; 注意: truncate只会清除数据,drop不光清除数据还要删除结构 三、MySQL清空数据内容的语法:delete SQL命令: delete from 名 where id='1'; 或 delete from 名; 注意: delete含义:你要删除哪张的数据 delete可以删除一行,也可以删除多行; 如果不加where条件,则是删除所有的数据,这是很危险的!不建议这样做! 总结: 1、当你不再需要该时, 用 drop; 2、当你仍要保留该,但要删除所有数据表记录时, 用 truncate; 3、当你要删除部分记录或者有可能会后悔的话, 用 delete。

    11.9K60编辑于 2022-09-05
  • 来自专栏用户7873631的专栏

    新零售mysql设计(快递 退货

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql 快递: 解析: 数据 退货 解析: 数据 sql 快递: CREATE TABLE t_delivery 一个快递是吧。也就是这个包括送快递这块的方方面面对吧,那这个快递是送什么的。是不是订单里面的商品。所以得包括订单的id对吧。也包括商品对吧。 关联的别的需要索引的。 unsigned not null COMMENT "退款金额", payment_type tinyint unsigned not null COMMENT "退款方式:1借记卡,2信用卡,3微信 INDEX idx_order_id(order_id), INDEX idx_qa_id(qa_id), INDEX idx_status(`status`) ) COMMENT="退货"

    710110编辑于 2022-11-02
  • 来自专栏互联网技术栈

    MySQL 高性能设计规范

    相关文章: MySQL高性能设计规范:http://www.jianshu.com/p/f797bbe11d76 MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45 image.png 良好的逻辑设计和物理设计是高性能的基石, 应该根据系统将要执行的查询语句来设计schema, 这往往需要权衡各种因素。 更长的列会消耗更多的内存, 因为MySQL通常会分配固定大小的内存块来保存内部值。 尤其是使用内存临时进行排序或操作时会特别糟糕。 在利用磁盘临时进行排序时也同样糟糕。 二、结构设计 1.范式和反范式 对于任何给定的数据通常都有很多种表示方法, 从完全的范式化到完全的反范式化, 以及两者的折中。 在范式化的数据库中, 每个事实数据会出现并且只出现一次。 ,即每行数据都能被唯一的区分; 备注:必须先满足第一范式; 第三范式(3NF):一个中不能包涵其他相关中非关键字段的信息,即数据不能有沉余字段;

    1K20发布于 2018-12-12
  • 来自专栏爱可生开源社区

    第34期:MySQL 冗余设计

    引言: 上一篇我介绍了 MySQL 范式标准化设计,范式设计具有以下优点: 1、把如何消除数据冗余做到极致,从而减少关系对磁盘的额外占用。 2、各个之间的关系表现非常清晰,可读性非常强。 正文: 但是范式设计同样也有缺点: 范式标准化,等级越高,数量就越多。比如 2NF 比 1NF 可能要多几张3NF 比 2NF 可能又要多几张等等。 反范式也即通过一定的冗余把原先高级别的范式设计降低为低级别的范式设计来减少范式设计带来的数量增多的缺点。 比如满足 BCNF 的,通过冗余一定字段,降低为 3NF,甚至降低到 2NF ,一直到 1NF 。有的场景为了查询性能甚至不需要满足 1NF。 联合查询的开销非常大,为了消除不必要的联合查询,此时就不能完全按照范式理念来设计,需要一定的反范式思想,针对每个需求,添加必要的冗余列方可达到简化查询。

    1.1K30发布于 2021-09-08
  • 来自专栏企鹅号快讯

    MySQL设计踩过的坑!

    希望我能说说我在数据库设计时踩过的坑。那么,我们今天就来聊聊我在数据库设计时踩过的坑,以及现在对数据库设计的一点建议。希望能够帮助到你。 注释 之前在数据库设计时,就没有加注释的习惯,造成的直接后果是:数据库设计阶段一过,后续数据的使用中,字段名就全靠猜了。我们写代码是知道注释是非常重要的,同样在设计数据库时,注释也非常重要! 索引怎么加,索引重不重要,可以查看《写会MySQL索引》一文进行查看!唉,我就吃过不少没加索引或忘记添加索引的亏,记忆犹新!!! 小结 以上是我数据库设计时躺过的坑,下面小结精简版本一下: 允许保存表情的,存储格式设计为utf8mb4,避免使用utf8。 选择合适的数据类型。 以及字段上添加合理的注释。 数据库设计时,一定要在外键字段以及合适的字段上加索引。 上面是我数据库设计时,遇到踩过坑以后的经验之谈。有些坑当时还真花了不少时间来填补。

    1.3K80发布于 2018-02-07
  • 来自专栏杨建荣的学习笔记

    MySQL周期管理的设计

    这是学习笔记的第 2038 篇文章 关于MySQL周期管理,近期做了初步的设计,总体上是希望把周期的管理和业务同学对接起来,实现流程化的管理。 对于整体的设计方面,需要开发后端的API,API列表如下: 周期表列表 周期创建 周期属性变更 周期批量变更接口 周期数据清理接口 巡检任务 大数据提取接口 即时通讯提醒接口 对于模型的设计是重中之重 ,也能够决定我们的周期管理的存储设计优劣。 模型方面考虑了如下的一些Mysql_dailytable 周期 Mysql_cycle_table_manage_log 周期维护日志(包含配置创建,属性修改) Mysql_cycle_table_ddl_log 周期变化历史记录 Mysql_cycle_table_inspection_log 模型详细设计如下: Mysql_dailytable id ip_addr db_port db_name Operator_method

    2K30发布于 2019-07-17
  • 来自专栏用户7873631的专栏

    新零售mysql设计设计省份+城市

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql(省份) sql(城市) 省市之间的联系是: province_id int unsigned UNIQUE unq_province(province)是什么意思》 举个例子: 是不是一般都要有idname呀 像省份是不是 province 就是name呀 sql(省份) CREATE ; 举个例子: 是不是一般都要有idname呀 像省份是不是 city 就是name呀 是不是得说这个城市属于哪一个省份呀 sql(城市) CREATE table t_city( id 2)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利; 3)数字型,占用索引空间小,范围查找与排序友好,在程序中传递也方便; 为什么要设置主键,主键作用是什么? 别人看懂这是什么字段或者或者数据库 UNIQUE unq_province(province)是什么意思》 因为搜索的时候是先搜索某省才能搜索某市哦

    1.1K110编辑于 2022-11-02
  • 来自专栏用户7873631的专栏

    零售商贩mysql设计:banner管理

    如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化 ,因为可为 NULL 的列使 得索引、索引统计和值比较都更复杂 。 可为NULL 的列会使用更多的存储空间 ,在 MySQL 里也需要特殊处理 。 InnoDB 被设计对于CPU效率和最大性能 当处理大量数据时 InnoDB 可以处理大量的数据,即使操作系统 文件限制为2GB CHARSET=utf8mb4 这是字符集 数据 (banner子项 可为NULL 的列会使用更多的存储空间 ,在 MySQL 里也需要特殊处理 。 InnoDB 被设计对于CPU效率和最大性能 当处理大量数据时 InnoDB 可以处理大量的数据,即使操作系统 文件限制为2GB CHARSET=utf8mb4 这是字符集 数据 图片 上图的

    1.2K10编辑于 2022-11-14
  • 来自专栏用户7873631的专栏

    新零售mysql设计 订单 订单详情

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql 订单 数据 订单详情 数据: 订单号与流水号有什么不同? 10,2) unsigned not null COMMENT "总金额", payment_type tinyint unsigned not null COMMENT "支付方式:1借记卡,信用卡,3微信 ,4支付宝,5现金", `status` tinyint unsigned not null COMMENT "状态:1未付款,2已付款,3已发货,4已签收", postage decimal(10,2 2)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利; 3)数字型,占用索引空间小,范围查找与排序友好,在程序中传递也方便; 为什么要设置主键,主键作用是什么? 别人看懂这是什么字段或者或者数据库 为什么要用int unsigned类型呢? 因为id是不是整数的。

    3K110编辑于 2022-11-02
  • 来自专栏用户7873631的专栏

    新零售mysql设计(采购 入库信息 入库商品

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql(采购) 解释 你说要采购东西是吧。提供要采购的商品。数量 运去那号仓库。 日期时间 数据 sql(入库信息) 解释: 解析: 数据 sql(入库商品) PRIMARY KEY(productin_id,purchase_id) ---- sql(采购) CREATE table 日期时间 采购的是商品t_sku中的id==1的商品. num:数量是五十部手机. warehouse_id:是为一号仓库做的采购。 in_price:采购价格3000元. buyer_id:采购员编号为20 status:完成采购就为1.否则0 数据 sql(入库信息) CREATE TABLE t_productin( id int unsigned PRIMARY 支付方式1 数据 sql(入库商品) CREATE TABLE t_productin_purchase( productin_id int unsigned not null COMMENT "

    1.8K30编辑于 2022-11-07
  • 来自专栏程序猿

    MySQL数据库设计规范

    3、UUID(),USER()这样的MySQL INSIDE 函数对于复制来说是很危险的,会导致主备数据不一致,所以请不要使用。如果一定要使用UUID作为主键,让应用程序来产生。 二、数据库对象设计规范 1、 设计 a)在设计时尽量包含两个日期字段:crt_time(创建日期),upd_time(修改日期)且 非空, 对表的记录进行更新的时候,必须包含对 upd_time字段的更新 d)Mysql尽量设置成 KV(Key-Value)结构,这样便于扩展和维护。 e)当的字段数非常多时,可以将分成两张,一张作为条件查询,一张作为详细内容(主要是为了性能考虑)。 h)由于MYSQLDDL维护成本很高,所以在适当的时候,可以有一定的字段容余。 比如:Value1,Value2,Value3 这样的字段。 如: sample member_id 上的索引:sample_mid_ind。 3.

    3.3K30发布于 2019-05-08
领券