总结MySQL优化的最最基础操作
时间:2021-11-15 15:48
详细的MySQL优化步骤如下: 因为建表的时候,如果不对创建的值设置默认值,MySQL都会设置默认为 所以对于那些以前偷懒的字段,手动设置一个默认值吧,空字符串呀,0呀补上。 虽然这种方法对于MySQL的性能来说没有提升多少,但是这是一个好习惯,而且以小见大,不要忽略这些细节。 对于经常查询的字段,请加上索引,有索引和没有索引的查询速度相差十倍甚至更多。 当表和表之间有约束时,虽然增删查的SQL语句变简单了,但是带来的负面效果是插入等操作数据库都会去检查约束(虽然可以手动设置忽略约束),这样相当于把一些业务逻辑写到了数据库层,不便于维护。 数据库中那些可以用整形表示的数据就不要使用字符串类型,到底是用 这种优化往往在数据库中有大量数据以后是不可行的,最好在数据库设计之前就设计好。 查询的时候,肯定 定长数据比变长数据查询快,因为比较定长数据与数据之间的偏移是固定的,很容易计算下一个数据的偏移。而变长数据则还需要多一步去查询下一个数据的偏移量。不过。定长数据可能会浪费更多的存储空间。 对于那些数据量可能近期会超过500W或者增长很快的表,一定要提前做好垂直分表或者水平分表,当数据量超过百万以后,查询速度会明显下降。 分库分表尽量在数据库设计初期敲定方案,否则后期会极大增加代码复杂性而且不易更改。 垂直分表是按照日期等外部变量进行分表,水平分表是按照表中的某些字段关系,使用hash映射等分表。 分库分表的前提条件是在执行查询语句之前,已经知道需要查询的数据可能会落在哪一个分库和哪一个分表中。 这个才是很多系统数据库瓶颈的始作俑者。 使用redis等缓存,还有本地文件缓存等,可以极大地减少数据库查询次数。缓存这个东西,一定要分析自己系统的数据特点,适当选择。 推荐学习:《mysql视频教程》 以上就是总结MySQL优化的最最基础操作的详细内容,更多请关注gxlsystem.com其它相关文章!优化思路
尽可能不要使用NULL值
NULL
。那么为啥用NULL
不好呢?NULL
使得索引维护更加复杂,强烈建议对索引列设置NOT NULL
NOT IN
、!=
等负向条件查询在有NULL
值的情况下返回永远为空结果,查询容易出错NULL
列需要一个额外字节作为判断是否为NULL
的标志位NULL
时和该列其他的值可能不是同种类型,导致问题。(在不同的语言中表现不一样)NULL
的列的查询添加索引
id
字段varchar
类型的字段,在建立索引的时候,最好指定长度LIKE
条件这样的模糊搜索对于字段索引是无效的,需要另外建立关键词索引来解决优化表字段结构
varchar
还是char
要看字段的可能值。tinyint
代替VARCHAR
,ENUM
呢?ENUM
扩展困难,比如后来移动平台又增加了一个ipad
,那岂不是懵逼了,而tinyint
加个2就行,而且ENUM
在代码里面处理起来特别奇怪,是当成整形呢还是字符串,各个语言不一样。char
,比如邮编,总是5位varchar
bigint
,比如记录文章数目的表id
字段,用int
就行了,21亿篇文章上限够了int
类型比varchar
快,因为整数的比较直接调用底层运算器就可以实现,而字符串比较要逐个字符比较。大表拆分
优化查询语句
LIKE
is null
的列or
添加缓存
检查数据表结构