SQL 性能优化梳理

坦白来说,MySQL的性能优化主要围绕两个阶段:建表和查询执行。
其实很简单。
可以从以下几点来组织。

我们先来说说最重要的事情。
创建表时,架构和数据类型优化非常重要。
我们去年运行的一个项目有大约 3 ,000 个级别的数据。
合理的数据类型选择,例如使用TinyInt代替Int,可以显着减少存储空间并提高插入和查询效率。
另一件要记住的事情是索引优化。
例如,B 树索引可以减少查询扫描的数据量,但请注意它们有局限性。
例如,对非最左边列的查询不能使用索引。

一开始我以为所有列都需要建立索引,但后来我意识到我错了。
过度索引实际上会降低性能。
另一个重要的一点是避免使用索引列作为表达式或函数参数,这会导致索引失败。

运行查询时,响应时间、扫描的行数和返回的行数是三个重要指标。
避免对不相关的列和行进行查询可以有效减少扫描和返回的数据量。
切分查询和分解相关查询可以帮助您更好地利用资源并提高效率。

等等,还有一个问题需要注意:条件字段的类型与表结构的类型不匹配。
这会导致索引失败。
例如,以 % 开头的 Like 查询无法命中索引。

MySQL 5 .7 中的新功能,例如对生成列和 JSON 格式数据的支持,也提供了进一步的性能优化潜力。

最后,您可以使用Explain来分析查询执行计划,以更好地了解查询性能,包括确定是否使用行字段扫描了太多行。

总的来说,优化MySQL性能是一个复杂的过程,需要在实际生产中不断学习和调优。
您认为还有哪些优化点值得关注?

sql调优的几种方式

2 02 3 年,大型电商数据库已针对 SQL 进行了优化:
1 避免全表扫描并在 WHERE 和 ORDER BY 列上创建索引。
2 、WHERE子句中避免NULL值判断,否则会扫描全表。
3 .避免使用!= o,否则将扫描整个表。
4 .避免使用OR连接条件,否则将扫描整个表。
5 、谨慎使用IN和NOT IN,否则会扫描整个表。
6 . LIKE '%abc%' 会引起全表扫描。
7 .避免WHERE子句中的表达式操作,否则将扫描整个表。
8 .避免WHERE子句中的函数操作,否则将扫描整个表。
9 、WHERE子句中“=”左边不能有函数或算术运算,否则索引无效。
1 0.对于复合索引,必须使用第一个字段,并且字段顺序与索引一致。