SQL为什么这么慢?

296 阅读2分钟

SQL执行速度慢的原因分析?

SQL执行偶尔很慢

  • 数据库在刷新脏页。
  • 数据库无法获取锁。

SQL执行一直很慢

  • 没有给字段设置索引或者字段设置了索引但是SQL没有用上。
  • IO吞吐量小,形成了瓶颈效应。
  • 数据库内存不足。
  • SQL查询的数据量太大,或者返回了不必要的行和列。
  • 如果SQL和数据库不再同一台服务器,那么还有可能是网络速度慢。

优化SQL执行速度慢的方法?

  • 根据查询条件,给数据库表建立索引,优化索引,优化访问方式。
  • 横向、纵向拆分大表,减小表的尺寸。
  • 优化SQL,多次查询少量数据,少使用*、distinct等关键字。
  • 升级数据库服务器硬件,扩大内存。
  • 提高网速。

怎么判断一条SQL是否是通过索引查询到的数据?

  • 在select语句前加上explain就可以了。
  • 查找出来的结果中有一个key属性,key属性是用来显示使用的索引的,如果key属性为null,那就说明没有使用索引。
create index nameindex on tb_user(name(10));	#在tb_user表以name字段创建一个名为nameindex的索引
explain select * from tb_user where name = '鞠婧祎';	#通过关键字explain查询

在这里插入图片描述

数据库的索引

数据库索引的创建方式:

CREATE INDEX [索引名] ON [表名]([列名](长度)); 
create index nameindex on tb_user(name(10));

索引的数据结构

  • 索引的底层是一个平衡树(非二叉树)。

索引的优点:

  • 提高SQL的查询速度。

索引的缺点:

  • 虽然索引可以提高SQL的查询速度,但是会降低SQL语句insert、update、delete语句的速度,因为这些语句不仅要操作数据表数据,还要维护索引数据。
  • 索引会占用磁盘空间。