SQL执行速度慢的原因分析?
SQL执行偶尔很慢
- 数据库在刷新脏页。
- 数据库无法获取锁。
SQL执行一直很慢
- 没有给字段设置索引或者字段设置了索引但是SQL没有用上。
- IO吞吐量小,形成了瓶颈效应。
- 数据库内存不足。
- SQL查询的数据量太大,或者返回了不必要的行和列。
- 如果SQL和数据库不再同一台服务器,那么还有可能是网络速度慢。
优化SQL执行速度慢的方法?
- 根据查询条件,给数据库表建立索引,优化索引,优化访问方式。
- 横向、纵向拆分大表,减小表的尺寸。
- 优化SQL,多次查询少量数据,少使用*、distinct等关键字。
- 升级数据库服务器硬件,扩大内存。
- 提高网速。
怎么判断一条SQL是否是通过索引查询到的数据?
- 在select语句前加上explain就可以了。
- 查找出来的结果中有一个key属性,key属性是用来显示使用的索引的,如果key属性为null,那就说明没有使用索引。
1
2create index nameindex on tb_user(name(10)); #在tb_user表以name字段创建一个名为nameindex的索引
explain select * from tb_user where name = '鞠婧祎'; #通过关键字explain查询数据库的索引
数据库索引的创建方式:
1 | CREATE INDEX [索引名] ON [表名]([列名](长度)); |
索引的数据结构
- 索引的底层是一个平衡树(非二叉树)。
索引的优点:
- 提高SQL的查询速度。
索引的缺点:
- 虽然索引可以提高SQL的查询速度,但是会降低SQL语句insert、update、delete语句的速度,因为这些语句不仅要操作数据表数据,还要维护索引数据。
- 索引会占用磁盘空间。