欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql的使用习惯

程序员文章站 2022-03-11 10:27:48
mysql的使用习惯1、写完SQL先expain查看执行计划(SQL性能优化)2、操作update或者delete语句,加个limit1)降低写错SQL的代价2)SQL效率很可能更高3)可以避免长事务4)数据量过大,容易把cpu打满3、设计表的时候,所有表和字段都添加相应的注释(SQL规范优雅)4、SQL书写格式,关键字大下保持一致,使用缩进5、insert语句标明对应的字段名称6、变更SQL操作先在测试环境执行,写明详细的操作步骤以及回滚方案,并在生产前review。7、设计数据库表...

mysql的使用习惯

1、写完SQL先expain查看执行计划(SQL性能优化)。

2、操作update或者delete语句,加个limit。

	1)  降低写错SQL的代价
	2)SQL效率很可能更高
	3)可以避免长事务
	4)数据量过大,容易把cpu打满

3、设计表的时候,所有表和字段都添加相应的注释(SQL规范优雅)。

4、SQL书写格式,关键字大下保持一致,使用缩进。

5、insert语句标明对应的字段名称。

6、变更SQL操作先在测试环境执行,写明详细的操作步骤以及回滚方案,并在生产前review。

7、设计数据库表的时候,加上三个字段:主键、create_time、update_time。

8、写完SQL语句,检查where、order by、group by后面的列,多表关联的列是否已加索引,优先考虑组合索引(SQL性能优化)。

9、修改或者删除重要数据前,要先备份。

10、where后面的字段,留意其数据类型的隐式转换。

11、尽量把所有的列定义为NOT NULL。

12、修改或者删除SQL,先写where查一下,确认后再补充delete 或update。

13、减少不必要的字段返回,如使用select <具体字段> 代替 select * 。

	1)节省资源、减少网络开销。
			select * 数据库需要解析更多对象、字段、权限、属性等。sql语句复杂,硬解析较多,会对数据库造成负担。
			若有log、IconMD5等无用且大文本字段,数据传输时网络开销较大,当应用程序和数据库不在同一台服务器时开销非常明显。
			对于无用的大字段,长度超过728字节,会先把数据序列化到另一个地方,因此读取这条记录会增加一次IO操作 。
	2)可能用到覆盖索引,减少回表,提高查询效率。
			mysql优化器‘覆盖索引’策略:例如表t(a,b,c,d,e,f,g) 其中a为主键,b列有索引。
			那么磁盘上有两颗B+树,即聚集索引和辅助索引分别为(a,b,c,d,e,f,g)和(b,a),如果用户只需要a、b两列数据。可以直接走辅助索引即可得数据,select * 由于还要获取其他列数据,则需要走辅助索引再走聚集索引,多查了一次B+树速度必然会慢。
			由于辅助索引的数据较少。很多情况通过覆盖索引(即通过辅助索引查就能获取用户需要的所有列),直接从内存中取,而聚集索引大概率在磁盘中,所以速度差异显著,几乎是数量级的差异。

14、所有表必须使用Innodb存储引擎。

1)支持事务、支持行级锁、更好的恢复性,高并发下性能更好。

15、数据库和表的字符集尽量统一使用utf-8。

1)可以避免乱码问题。
2)可以避免不同字符集比较转换,导致索引失效问题。

16、尽量使用varchar代替char。

1)变长字段存储空间小。

17、如果修改字段含义或对字段表示的状态追加时。需要及时更新字段注释。

18、SQL命令行修改数据,养成begin+commit事务的习惯

begin;
update user set name='admin' where id='1';
commit;

19、索引命名要规范,主键索引名为PK_字段名;唯一索引名为UK_字段名;普通索引名则为idx_字段名。

20、where 从句中不对列进行函数转换和表达式计算

21、如果修改/更新数据过多,考虑批量进行。
如:

1)大批量操作会造成主从延迟
2)大批量操作会产生大事务,阻塞
3)大批量操作,数据量过大,会把CPU打满
for each(200) {
	delete from user limit 500;
}

本文地址:https://blog.csdn.net/qq_37487977/article/details/110655767