首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【笔记】Mysql 数据库操作规范

索引规范: 单张表中索引数量不超过 5 个。 单个索引中的字段数不超过 5 个。 索引名必须全部使用⼩写。 ⾮唯⼀索引按照“idx_字段名称 [字段名称]”进⾏命名。...必要时推荐用 JOIN 代替子查询。 避免在 MySQL 中进⾏数学运算和函数运算。 减少与数据库交互次数,尽量采用批量 SQL 语句。...所有数据库账号的密码均不能为空,密码采用 16 位大小写字母和数字的组合。 数据库账号 / 密码不允许在邮件、企业微信群、家信群中公开,一经发现,DBA 有权立即进行重置。...【FAQ-4-01】 建议使用 UNSIGNED 存储⾮负数值。同样的字节数,⾮负存储的数值范围更大。如 TINYINT 有符号为 -128~127,无符号为 0~255。...【FAQ-5-01】 表必须有主键,推荐使⽤ UNSIGNED 自增列作为主键。表没有主键,INNODB 会默认设置隐藏的主键列;没有主键的表在定位数据行的时候非常困难,也会降低基于行复制的效率。

1.5K20

MySQL-索引优化篇(1)_安装演示库 & & explain参数

比如根据这个列 经过筛选后,能够把大部分的数据都过滤掉,之剩下很少的数据,那么就可以把这列称为选择性高的列。 宽度小的列优先 当然了有个前提,不违反选择性。...select子句的类型 (1) SIMPLE(简单SELECT,不使用UNION或子查询等) (2) PRIMARY(查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY)...RESULT(UNION的结果) (6) SUBQUERY(子查询中的第一个SELECT) (7) DEPENDENT SUBQUERY(子查询中的第一个SELECT,取决于外面的查询) (...如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引...,会先条件过滤索引,过滤完索引后找到所有符合索引条件的数据行,随后用 WHERE 子句中的其他条件去过滤这些数据行; 4) using where: 未使用索引,通过where条件过滤

39220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    互联网MySQL开发规范

    越简单越好:将字符转化为数字、使用TINYINT来代替ENUM类型 7. 所有字段均定义为NOT NULL 8. 使用UNSIGNED存储非负整数 9. INT类型固定占用4字节存储 10....使用INT UNSIGNED存储IPV4 12. 使用VARBINARY存储大小写敏感的变长字符串 13. 禁止在数据库中存储明文密码,把密码加密后存储 14....单个索引中的字段数不超过5个 3. 对字符串使用前缀索引,前缀索引长度不超过8个字符 4....(数值太离散了) (5) 默认使非空的唯一键作为主键 (6) 建议选择自增或发号器 3、重要的SQL必须被索引,比如: (1) UPDATE、DELETE语句的WHERE条件列 (2) ORDER BY...会把空和NULL给查出来 (18) 在SQL语句中,禁止使用前缀是%的like (19) 不使用负向查询,如not in/like (19) 关于分页查询:程序里建议合理使用分页来提高效率limit,offset

    21530

    mysql数据类型有哪几种_数据库 数据类型

    时间/日期类型 字符串类型 blog-二进制大对象,用来存储可变数量的数据。 int(11) 在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段的长度。  ...%m:代表月, 格式为(01……12) %c:代表月, 格式为(1……12) %d:代表月份中的天数,格式为(00……31) %e:代表月份中的天数, 格式为(0……31)...t where t.index_time = (select max(index_time) from ix_road_basic_data) limit 1 # oracle写法 SELECT...java.lang.Long 4 TINYINT 3 TINYINT UNSIGNED java.lang.Integer -6 SMALLINT 5 SMALLINT UNSIGNED java.lang.Integer...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.5K30

    设计数据库和表需要考虑哪些才不容易走弯路?

    2 尽量使用INT而非BIGINT,如果非负则加上UNSIGNED(这样数值容量会扩大一倍),当然能使用TINYINT、SMALLINT、MEDIUM\_INT更好。...要根据查询有针对性的创建,考虑在WHERE和ORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描 2 应尽量避免在WHERE子句中对字段进行NULL值判断,否则将导致引擎放弃使用索引而进行全表扫描...by,order by,on从句中出现的列 (2)where条件中,>=,between,in,以及like 字符串+通配符(%)出现的列 (3)长度小的列,索引字段越小越好...3 使用连接(join)来代替子查询 4 拆分大的delete或insert语句 5 可通过开启慢查询日志来找出较慢的SQL 6 不做列运算:SELECT id WHERE age...避免%xxx式查询 11 少用JOIN 12 使用同类型进行比较,比如用'123'和'123'比,123和123比 13 尽量避免在WHERE子句中使用!

    74620

    mysql基础

    排序 asc | desc limit 限制显示条数 in (); 在范围内 between x and y 在两者之间 ?...用于查询数据,having用于筛选数据 where对表中的列发发挥作用,having对查询结果中列发挥作用 where和having后面写法一样 select id, name, m_price-shop_price...as s from goods having s>100; 而:where只能对表中的字段名进行筛选 select id, name from goods where m_price - shop_price...创建外键约束,父表和子表必须要有相同的存储引擎,而且禁用临时表,具有外键列的表称为子表,子表所参照的表为父表。 数据库的存储引擎只能为InnoDB。...外键列不创建,会自动创建,子;参照列不创建的话,不会自动创建,为父。 结言 好了,欢迎在留言区留言,与大家分享你的经验和心得。

    56150

    MySQL大表优化方案

    1、尽量不要在一开始就考虑表拆分,会带来逻辑、部署、运维的各种复杂度; 2、一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下问题不大; 注意: 1、Covering index:...索引覆盖:即当索引本身包含查询所需全部数据时,不再访问数据文件本身,也就是不再需要回表操作; 2、复合索引顺序:理论上索引对顺序是敏感的,但是由于MySQL的查询优化器会自动调整where子句的条件顺序以使用适合的索引...优化 1、字段 尽量使用TINYINT、SMALLINT、MEDIUMINT作为整数类型,而非INT类型,如果非负加上UNSIGNED; VARCHAR的长度只分配真正需要的空间; 使用枚举或整型代替字符串类型...,考虑在WHERE和ORDER BY涉及到的列建索引,可以根据EXPLAIN来查看是否用了索引还是全表扫描; 避免在WHERE子句中对字段进行NULL值判断,否则将导致全表扫描; 值分布稀少的字段不适合建立索引...; 3、查询SQL 可通过开启慢查询日志来找到比较慢的SQL; 不做列运算,列运算将导致全表扫描; SQL语句尽可能简单: -- a、一条SQL只能在一个CPU运算; -- b、大语句拆小语句,减少锁时间

    1.1K20

    Python 高级笔记第二部分:数据库的概述和MySQL数据表操作

    子句 where子句在sql语句中扮演了重要角色,主要通过一定的运算条件进行数据的筛选,在查询,删除,修改中都有使用。...where score>80 order by score; 子查询 定义 : 当一个语句中包含另一个select 查询语句,则称之为有子查询的语句 子查询使用位置 from 之后 ,此时子查询的内容作为一个新的表内容...需要将子查询结果集重命名一下,方便where子句中的引用操作 2. 子句结果作为一个值使用时,返回的结果需要一个明确值,不能是多行或者多列。 3....索引操作 ⭐️概述 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。能够加快数据检索速度,提高查找效率。...(UNI):字段值不允许重复,但可为 NULL,KEY标志为 UNI 主键索引(PRI):一个表中只能有一个主键字段, 主键字段不允许重复,且不能为NULL,KEY标志为PRI。

    1.8K20

    初谈表的约束

    ,通过约束让我们未来插入数据库表中的数据是符合预期的。...默认值 默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。...空属性和默认值对比 default和not null不冲突,是互相补充的。 如果没有明确指定一列需要插入,就用default;如果建表中,对应列默认没有设置default,无法直接插入。...要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是2。...主键 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。不意味着一个表中的主键只能添加给一列,于是有了复合主键。

    7310

    配置查询与线程追踪函数|全方位认识 sys 系统库

    表中检查指定线程是否启用了性能事件监测功能,给定参数值对应performance_schema.threads表中的PROCESSLIST_ID列或SHOW PROCESSLIST输出的Id列值 如果给定连接...表中查询并返回给定内部线程ID号相关联的account名称(user_name@host_name) 该函数在MySQL 5.7.9中新增 参数: in_thread_id BIGINT UNSIGNED...对应performance_schema.threads表中的PROCESSLIST_ID列或SHOW PROCESSLIST输出的Id列值 返回值:一个BIGINT UNSIGNED值 函数定义语句文本...该值对应performance_schema.threads表的THREAD_ID列值 in_verbose BOOLEAN:是否在输出的事件堆信息中包含事件的instruments所在的源文件名和代码行号信息...,该函数在MySQL 5.7.9中新增 该函数调用时无需传入任何参数 返回值:一个TINYINT UNSIGNED值 函数定义语句文本 DROP FUNCTION IF EXISTS version_major

    1.9K30

    MySQL编程规范

    所有字段均定义为‘not null’ 使用‘unsigned’存储非负整数 使用‘datetime’存储时间 使用‘int unsigned’存储IPv4,而非‘char(15)’ 使用‘varbinary...每行记录物理长度不超过8KB 索引规范 索引的数量要控制: 单张表中索引数量不超过5个 单个索引中的字段数不超过5个 对字符串使⽤用前缀索引,前缀索引长度不超过8个字符 建议优先考虑前缀索引,超过20个长度的字符串列...重要的SQL必须被索引,比如: UPDATE、DELETE语句的WHERE条件列 ORDER BY、GROUP BY、DISTINCT的字段 多表JOIN的字段注意以下: 区分度最大的字段放在前面 核⼼...,在应用中保证该逻辑的完整性。...在SQL语句中,禁止使用前缀是%的like 使⽤预编译语句,只传参数,比传递SQL语句更高效;一次解析,多次使用;降低SQL注入概率 禁止使⽤‘order by rand()’ SQL中避免出现now(

    1.5K10

    MYSQL 8.0 后对语句的优化与特性

    在MYSQL 8 以后对于一些语句的处理是进行了优化的,主要有以下几个方面 1 针对语句在 in 和 exists 子查询中使用半连接的方式进行优化 2 针对子查询的物化 3 优化了子查询在使用...需要注意的地方是如果你的语句是update 或 delete的方式进行如上的语句操作,尤其是子查询的方式,进行数据的修改,那么以上的工作将无法进行,所以对于在MYSQL 8 中的数据修改还是建议分两步走...,查询出需要修改数据的行的主键,然后在对数据行进行修改,而不是在一个语句中就将数据一起进行修改。...同时也要考虑数据量的大小,数据量大的情况下,也强烈不建议使用子查询的模式,来直接更新表。...,对于数据处理上更有利,而不是使用子查询和 exists 的方式,如果使用exists的方式,去重的问题的解决方案中,需要考虑数据量的问题,如果数据量大,可以在语句的子查询中对数据进行去重,降低后续的数据处理量

    73750

    必看的数据库使用规范

    关于表 【强制】表和列的名称必须控制在32个字符以内,表名只能使用字母、数字和下划线,一律小写。 【强制】表名要求模块名强相关,同一模块使用的表名尽量使用统一前缀。...【强制】WHERE 子句中禁止只使用全模糊的LIKE条件进行查找,必须有其他等值或范围查询条件,否则无法利用索引。 【强制】索引列不要使用函数或表达式,否则无法利用索引。...【强制】禁止跨db的join语句。 【建议】不建议使用子查询,建议将子查询SQL拆开结合程序多次查询,或使用join来代替子查询。 【建议】线上环境,多表join不要超过5个表。...【建议】在多表join中,尽量选取结果集较小的表作为驱动表,来join其他表。 【建议】批量操作数据时,需要控制事务处理间隔时间,进行必要的sleep。...【建议】包含了order by、group by、distinct这些查询的语句,where条件过滤出来的结果集请保持在1000行以内,否则SQL会很慢。

    92050
    领券