1.所有数据库对象名称必须使用小写字母并用下划线分割
2.所有数据库对象名称禁止使用MySQL保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)
3.数据库对象的命名要能做到见名识意,并且最后不要超过32个字符
4.临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀
5.所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索 引失效,导致查询效率降低)
6.使用InnoDB 存储引擎
7.表字符集使用utf8mb4
8.所有表都需要添加注释
9.单表数据量建议控制在500万以内
10.不在数据库中存储图、文件等大的二进制数据
11.尽量做到冷热数据分离,减小表的宽度
12.禁止在线上做数据库压力测试
13.禁止在表中建立预留字段
14.谨慎使用MySQL分区表
15.库名、表名、字段名必须使用小写字母,并采用下划线分割
16.库名、表名、字段名禁止超过32个字符,需见名知意,建议使用名词不是动词
17.库名、表名、字段名禁止使用MySQL保留字
18.符合索引遵循前缀原则
19.like查询%不能再前,否则索引失效。如有需要,使用全文索引
20.column is null可以使用索引
21.如果MySQL估计使用索引比全表扫描慢,则放弃使用索引
22.如果or前的条件中列有索引,后面的没有,索引不会生效。
23.列类型是字符串,查询时,一定要给值加引号,否则索引失效。
24.确定order by 和 group by 中只有一个表的列,这样才能使用索引
普通索引:仅加速查询
唯一索引:加速查询+列值唯一(可以有null)
主键索引:加速查询+列值唯一(不可以有null)+表中只有一个
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
全文索引:对文本内容进行分词,进行搜索
外键索引:与主键索引形成联系,保证数据的完整性。
正则表达式中包括的元素:
原子(普通字符:a-z A-Z 0-9 、原子表、转义字符)
元字符(有特殊功能的字符)
模式修正符(系统内置部分字符 i 、m、S、U…)
转义字符
d 包含所有数字[0-9]
D 除所有数字外[^0-9]
w 包含所有字符(大小写英文字母、下划线、数字) [a-zA-Z_0-9]
W 除所有字符(大小写英文字母、下划线、数字)外 [^a-zA-Z_0-9]
s 空白区域如回车、换行、分页等 [fnr]
S 非空白区域如回车、换行、分页等 [^fnr]
元字符
. 匹配任意次但不包含回车换行
- 匹配任意次
? 匹配0次或1次
- 匹配1次或多次
| 选择匹配(或者)
^ 匹配开头(方括号中表示非)
$ 匹配尾部
{m} 匹配前一个内容的重复次数为m次
{m,} 匹配前一个内容的重复次数大于等于m次
{m,n}匹配前一个内容的重复次数m次到n次
( ) 合并整体匹配,并放入内存,可使用1 2…依次获取
模式修正符: 【/正则/U 】
小写i:不区分大小写
小写m:匹配首内容或尾内容时采用多行识别匹配
小写s:将转义回车取消视为单行匹配
小写x:忽略正则中的空白
大写A:强制从头开始匹配
大写D:强制$匹配尾部无任何内容
大写U:禁止贪婪匹配,只跟踪到最近的一个匹配符并结束,常用在采集程序
小写u:匹配中文