博客
关于我
mysql数据库里的一些坑(读高性能mysql有感)
阅读量:789 次
发布时间:2023-02-12

本文共 996 字,大约阅读时间需要 3 分钟。

数据库优化指南

1.int类型的存储范围不会因括号内的值而改变

int类型的存储范围始终是-2147483648到2147483647。选择填充零可以更直观地查看区别。

2.主键自增ID最好设为无符号int类型

主键自增ID使用无符号int类型可以达到更大的值,最大值为4294967295(2^32 -1),这比有符号int类型的范围更大。

3.索引字段最好设为NOT NULL

索引字段设置为NOT NULL可以减少存储空间和提高查询性能。其他字段也应尽量设为NOT NULL。

4.varchar字段长度应尽可能短

varchar字段的长度应尽可能短,以减少内存占用。建议不使用默认长度255,过长的字段会增加内存使用。

5.char类型的空格填充特性

char类型在存储小于最大长度的数据时会用空格填充。查询时会自动剔除空格,因此存储的字符串末尾若有空格,查询结果中将没有该空格。

6.Memory引擎对blob和text的支持

Memory引擎不支持blob和text类型的字段。如果列表查询中包含这些类型且使用了临时表排序,可能会使用磁盘临时表,严重影响性能。

7.timestamp和datetime的选择

timestamp类型占用4字节,支持1970到2038的范围。除非需要更大的范围,建议优先使用timestamp类型而不是int类型。

8.枚举类型的适用场景

枚举类型适用于固定值字段(如性别男女),但值的存储和排序基于整数值。注意字段值的顺序与整数值顺序一致。

9.枚举类型的局限性

枚举类型适合稳定不变的字段,但对于经常变动的字段可能带来性能负担。

10.IPv4地址的存储建议

IPv4地址可用无符号int类型存储,最大值为4294967295。可以通过mysql函数INET_ATON和INET_NTOA进行转换。

11.范式与反范式的适用性

范式化设计适合数据量小且查询频率高的场景,而反范式化适合数据量大且查询频率低的场景。根据具体需求合理选择。

12.LIMIT子句的使用技巧

  • limit 5表示检索前5条记录
  • limit 5,10表示检索第6到第10条记录
  • limit 5,-1表示检索倒数5条记录

13.多表联查性能优化

多表联查时,尽量减少连表数量。每减少一个表可能将查询时间减少一半,尤其是当连表中的表数据量大或属于其他数据库时。

(待续...)

转载地址:http://tjdfk.baihongyu.com/

你可能感兴趣的文章
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump备份时忽略某些表
查看>>
mysqlreport分析工具详解
查看>>
MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
查看>>
MYSQL一直显示正在启动
查看>>
MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
查看>>
MySQL万字总结!超详细!
查看>>
Mysql下载以及安装(新手入门,超详细)
查看>>
mysql中cast() 和convert()的用法讲解
查看>>
mysql中floor函数的作用是什么?
查看>>
MySQL中group by 与 order by 一起使用排序问题
查看>>
mysql中having的用法
查看>>
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
查看>>
mysql中json_extract的使用方法
查看>>
mysql中null和空字符串的区别与问题!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
mysql中实现rownum,对结果进行排序
查看>>