mysql默认值无效_MySQL开发规范

一、基础规范

1) 使用InnoDB存储引擎
2) 数据库字符集使用UTF8,校对字符集使用utf8_general_ci
3) 所有表、字段都尽量添加注释
4) 库名、表名、字段名使用小写字母,禁止超过32个字符,须见名知意
5) 非唯一索引以 “idx_字段1_字段2” 命名,唯一索引必须以 “uniq_字段1_字段2” 命名

二、查询规范

1) SQL语句尽可能简单,大的SQL想办法拆分成小的SQL实现
2) 不要使用SELECT * ,查询具体要用到的字段
3) 禁止like做where条件(会全表扫描且不能用索引)
4) 除非必要,避免使用 != 等非等值操作符(会导致用不到索引)
5) Where条件里不要对列使用函数(不会引用索引)
6) 能确定返回结果只有一条时,使用limit 1(LIMIT分页注意效率,LIMIT越大,效率越低)
7) 少用子查询,改用JOIN(子查询要在内存里建临时表)
8) 多表JOIN的字段,区分度最大的字段放在前面
9) IN条件里的数据数量要尽量少,超过200个用EXIST代替IN
10) Where字句中同一个表的不同字段组合建议小于5组(否则考虑分表)
11) 禁止单条语句同时更新多个表
12) 事务要尽量简单,整个事务的时间长度不要太长

三、表设计规范

1) 用DECIMAL代替FLOAT和DOUBLE存储精确浮点数(精确数据)
2) 使用TINYINT代替ENUM类型(便于迁移时兼容)
3) 尽可能不使用TEXT、BLOB类型(该数据类型不能设置默认值、不便于排序、不便于建立索引)
4) 同一意义的字段设计定义必须相同(便于联表查询)
5) 所有字段均定义为NOT NULL(避免使用NULL字段,NULL字段很难查询优化,NULL字段的索引需要额外空间,NULL字段的复合索引无效)
6) 表必须有主键,不使用更新频繁的列做主键、尽量不使用字符串列做主键,尽量使用非空的唯一自增键做主键

四、索引设计规范

1) 单表索引数量不超过10个
2) 单个字段不要超过两个索引
3) 新建的唯一索引必须不能和主键重复
4) 避免冗余和重复索引
5) 尽量不要在频繁更新的列上建立索引
6) 不在低基数列上建立索引,例如状态、类型等
7) 不在索引列进行数学运算和函数运算(参与了运算的列不会引用索引)
8) 复合索引须符合最左前缀的特点建立索引(mysql使用复合索引时从左向右匹配)
9) 重要的SQL中where条件里的字段必须被索引
10) Where条件里的字段顺序与索引顺序无关,优化器会自动调整
11) 索引选择性= Cardinality / Total Rows,即基数 ÷ 数据行数,值越接近1说明使用索引的过滤效果越好
12) 建立索引时,务必先explain,查看索引使用情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

set和map去重调用什么方法_你真的了解ES6的Set,WeakSet,Map和WeakMap吗?

之前在学习 ES6 的时候,看到 Set 和 Map,不知道其应用场景有哪些,只觉得很多时候会用在数组去重和数据存储,后来慢慢才领悟到 Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结构。SetSet 本身是一个构造函数…

c语言整数反转用while函数,7.整数反转(LeetCode)——C语言

根据题目要求,必须是32位有符号整数,数值范围是[-2^31, 2^31-1],换算出来就是-2147483648 —— 2147483647之间。将此范围内的数值反转可能会导致溢出,比如1234567893,反转之后为3987654321,已然超出了以上…

python画饼图存在的问题_Matplotlib 绘制饼图解决文字重叠的方法

在使用Matplotlib 绘制饼图的时候有些时候一些数据的比列太小在饼图呈现的效果不明显 很容易被覆盖,为了解决这个问题以下就是我个人的心得。 【未解决之前呈现的效果】可以看到这个饼状图其他和硕士这2个部分占比很小而且比例相互覆盖,这让人看起来不舒…

antdesign图片点击放大_点击图片放大特效代码,全屏显示,再点击恢复原状【多种方法】...

我们先来看看效果如何,点击图片试一试。图片的实际大小为1920x1080,我们先把宽度限制在300px,点击后图片还原到100%(如果浏览器窗口高度小于图片的真实高度,这样的情况下,图片虽然宽度还原到100%,但是所显示…

c语言中math的库函数,C语言中math.h库中的常用函数

C语言中math.h库中的常用函数 int abs(int i) 返回整型参数i的绝对值double cabs(struct complex znum) 返回复数znum的绝对值double fabs(double x) 返回双精度参数x的绝对值long labs(long n) 返回长整型参数n的绝对值double exp(double x) 返回指数函数e^x的值double frexp(…

python变量类型是动态的_【Python】python动态类型

在python中,省去了变量声明的过程,在引用变量时,往往一个简单的赋值语句就同时完成了,声明变量类型,变量定义和关联的过程,那么python的变量到底是怎样完成定义的呢? 动态类型 python使用动态类…

python bottle部署g_python bottle框架(WEB开发、运维开发)教程 | linux系统运维

教程目录一:python基础二:bottle基础python bottle 框架基础教程:环境部署三:WEB开发教程四:运维开发教程运维开发(1.1):框架、结构介绍运维开发(1.2):前端(ajax)说明运维开发(1.3):…

c语言excel转pdf,基于C语言和Excel软件下光速测量仪测量玻璃折射率.pdf

基于C语言和Excel软件下光速测量仪测量玻璃折射率.pdf基于语言和 软件下光速测量仪测量玻璃折射率 朱承君 王奇峰 芦立娟 张艳春 ( 浙江海洋学院机电学院 浙江 舟山 ) ( 收稿日期 ) 摘要 介绍了用等相位法测玻璃折射率的原理和方法, 并利用了 语言和 在科学计算中的…

python3.7界面_Python3.7+tkinter实现查询界面功能

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。 这篇文章使用tkinter实现一个简单的查询界面 #!/usr/bin/python # -*- coding: UTF-8 -*- from tkinter import * import sqlite3 # 导入消息对话框子模块 import tkinter.messagebox #im…

python中级水平_python 初级/中级/高级/核心

"一等对象":满足条件:1.在运行时创建 2.能赋值给变量或数据结构中的元素 3.能作为参数传递给函数 4.能作为函数的返回结果[ 整数、字符串、字典、"所有函数" ]等都是一等对象"什么是函数"调用:直接使用、不需要类或对象进…

c语言报错spawning 插1,C语言错误····error spawning c1.exe

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>…

python中的元类_Python中的元类(metaclass)

提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解。他知道这肯定和自身有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程。 …

方言大全_长沙人亲戚称呼大全!记得收藏以防失传!

长沙人亲戚称呼大全!记得收藏以防失传!首先,看一下中国亲戚称谓图!▼长沙方言对于亲人的称谓自有一套说法!(如有不同,以你自己的叫法为准哦~)▼长辈篇父亲:ya、“爷(ya)老倌”,“爷(…

adb android源码分析,Android Adb 源码解析(base on Android 9.0)

Adb 框架Adb架构Android Adb 一共分为三个部分:adb、adb server、adbd,源码路径:system⁩/⁨core⁩/⁨adb。adb和adb server 是运行在PC端,adb就是大家所熟悉的控制台命令adb,adb server是由adb fork出的一个常驻后台的…

oracle 解锁 账户_oracle用户解锁三种方法

ORA-28000: the account is locked-的解决办法2009-11-11 18:51ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob,查看users;第三步&…

android 解码webp动画,android webp编解码详解

key words:android decode webp sample当我敲下键盘的时候有种深深的耻辱感,看到android 4.0支持webp格式的图像,于是我狠命的找提供了什么样的api,nnd,硬是没找到,后来抱着试试的心态,用Bitmap…

python生成json_如何将Python数组转为Json格式数据并存储?

在Python中将数组转为Json数据存储时需要用到将json模块中的json.dumps()或者json.dump()方法。 json.dumps()方法用法 使用json.dumps( )方法将Python数组转为json格式数据 # 导入json模块 import json # 定义Python数组 py_list [{JavaEE: "http://java.itheima.com&qu…

rust里mp5a4_Rust源码分析:channel内部mpsc队列

首先,之前的upgrade过程中内存的回收要稍微注意下。因为Receiver现在指向shared::Packet之后,那个new_port需要被析构,也就是调用drop函数,我们看下drop的实现:implDropforReceiver{fn drop(&mutself){match*unsaf…

android settext 参数,Android TextView.setTextColor()的参数设置方式

摘要:Android TextView.setTextColor()的参数设置方式查了下资料发现setTextColor()的参数应该写成以下的这种形式:setTextColor(0xFF0000FF);//0xFF0000FF是int类型的数据,分组一下0x|FF|0000FF,0x是代表颜色整数的标记&#xff…

vscode angular智能提示_【线下活动】手把手教你玩转 VS Code 插件开发

感谢 Google Developer Group 的邀请,3 月 30 号下午,韩老师将手把手带你玩转 VS Code 插件开发。 Angular 使用了 TypeScript,VS Code 使用了 Chromium。感谢这个开放与包容的时代,技术无界,正是大家对技术有着执着的…