300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Sql语句的优化以及Sql语句优化工具

Sql语句的优化以及Sql语句优化工具

时间:2024-06-21 12:56:43

相关推荐

Sql语句的优化以及Sql语句优化工具

这周在做项目的时候,发现有些Sql语句写的复杂,一个复杂的Sql语句不仅性能比较低下,当涉及到重构的时候也是不容易理解和读懂的,并且一个复杂的sql语句会显著增加程序的耦合度,所以Sql语句的优化就显的很必要了。

Sql语句复杂化的原因

首先列举一下Sql语句复杂化的原因:

将业务逻辑由Sql语句实现数据库表的设计不符合第三范式Sql语句中含有大量冗余的不必要逻辑没有很好的利用视图

如何优化Sql语句呢

不要超过5个表以上的连接

超过5张表以上的连接会大大增加sql引擎的消耗。

考虑使用临时表或表变量存放中间结果

这样做可以使得代码逻辑更加清晰

少用子查询

善用视图,但应该注意视图嵌套不要过深

可以使用order by limit组合,同时在order by 后面使用索引,效率更高。

少使用select * 进行全表查询

减少工作量的一个简单方法是限制每个这个查询所检索出来的信息,select * 会检索存储在数据库表中的所有可用信息。对于具有多个字段和行的大型表,使用SELECT*语句可能会检索大量不必要的数据,导致大量的资源消耗殆尽。

避免使用select distinct语句

虽然我们一般都使用select distinct 去删除重复数据,但它降低了sql的运行和处理能力。为了避免降低查询的性能,可以选择更多字段来生成唯一的结果。

不要使用have 去过滤数据,而是应该使用where 去过滤数据

sql调优的主要目标是提高效率。 where 是在查询数据库返回结果之前作用,而have这相当于过滤器,他是通过对返回的结果进行过滤然后,得到最终结果的。

在短语末尾保留通配符

通配符对于全局搜索非常有用,但是通配符既然是全表搜索,他一定存在效率低下的风险。因为它将查询数据库中所有与两个通配符之间匹配的文本记录。所以,可以尽量少一点使用通配符

使用limit对查询结果进行采样

Limit 语句是在数据库返回结果之前,对特定行的数据进行查询而避免全表查询,尤其是在对大量数据进行检索的时候,使用LIMIT语句可以避免全表扫描。

使用内部联接而不是WHERE进行联接

使用where 语句进行两表关联的时候,容易 产生笛卡尔积,所以一般情况下我们用inner join 去关联两张表。

SQL优化工具

美团开发的sqladvisor,连接数据库后,他会通过表结构去优化SQL工具,目前只提供linux centos下载。Tosska sql 优化工具,可以在windows系统下载,是由思科开发的,作为本地的sql优化工具。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。