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

常用的SQL优化办法有哪些

程序员文章站 2022-03-03 19:57:25
...

数据库优化的几个方面

  1. SQL以及索引的优化是最重要的。
  2. 要根据一些范式来进行表结构的设计。
  3. 系统配置的优化。
  4. 硬件优化。

sql语句的优化
可以通过打开Mysql中的慢查询日志来定位有问题的sql语句
慢查询日志相关内容:https://www.cnblogs.com/kerrycode/p/5593204.html
慢查询日志主要分为5部分,第一部分是慢查询时间,第二部分是慢查询的来源主机和用户,第三部分是查询的执行时间、锁定时间、发送的行数、扫描的行数。最后是时间戳形式记录的命令以及该命令的执行的时间戳。
通过explain查看sql执行计划,具体分析、优化

索引优化

  1. 选择索引
    1)选择合适的索引列,选择在 where, group by, order by, on 从句中出现的列作为索引项对于离散程度不大的列,没有必要创建索引
    2)索引字段越小越好(因为数据库的存储单位是页,一页中能存储的数据越多越好)
    3)离散度大的列放在联合索引前边
    判断离散程度大小的办法:
select count(distinct ziduan1),count(distinct ziduan2) from tablename
  1. 索引优化方法:
    索引一般情况下都是高效的。不过凡是都有两面性,索引是以空间换时间的一种策略,索引本身在提高查询效率的同时会影响插入、更新、删除的效率。不当的使用索引不仅增加了写操作的负担,也会影响读取的效率。索引越多,数据库分析的越慢。注意点:
    1)InnoDB 每个索引都会加上主键,联合索引不要加上主键,innodb会自动加,否则会冗余。
    2)索引存在的目的是为了加快查询的效率,不过不是索引越多越好,建立索引要适当才好。过多的索引会增加数据库判断使用什么索引来查询的开销,所以,有时候也会出现以去掉重复或者无效的索引为优化手段的优化方式。
    3)主键已经是索引了,所以primay key 的主键不用再设置unique唯一索引了。
  2. 索引原理参考:点这里

数据表结构优化
1、选择合适的数据类型
(1)使用可存下数据的最小的数据类型。
(2)使用简单地数据类型,int要比varchar类型在mysql处理上更简单。
(3)尽可能使用not null定义字段,这是由innodb的特性决定的,因为非not null的数据可能需要一些额外的字段进行存储,这样就会增加一些IO。可以对非null的字段设置一个默认值。
(4)尽量少用text,非用不可最好分表,将text字段存放到另一张表中,在需要的时候再使用联合查询,这样可提高查询主表的效率。
例子1、用int存储日期时间from_unixtime()可将Int类型的时间戳转换为时间格式
select from_unixtime(1392178320); 输出为 2014-02-12 12:12:00unix_timestamp()可将时间格式转换为Int类型
select unix_timestamp(‘2014-02-12 12:12:00’); 输出为1392178320
例子2、存储IP地址——bigInt
利用inet_aton(),inet_ntoa()转换
select inet_aton(‘192.169.1.1’); 输出为3232301313
select inet_ntoa(3232301313); 输出为192.169.1.1
数据库配置优化
硬件优化

相关标签: 数据库优化