昨天查询数据库的时还正常,今早来上班时,SQL语句查询就突然变得很慢了。这样的情况我相信你一定遇到过。 下面就让小编来带你了解其中的原因吧!

本篇文章简单总结了一下可能导致数据库查询慢的原因,希望能给大家后续查询优化提供一下指导。

SQL语句查询突然变得很慢,常见的情况有以下几种:电脑系统内存不足:和咱们的电脑一样,当内存不足的时候,就会变得很卡!

网速突然降速了:当网络速度变慢,HTTP 的请求也会变慢!

你所写的SQL语句不是最优解

两个原则

两条快于一条:

第一条SQL语句中,where查询语句中出现了null,这样就是导致数据库的引擎不会使用索引,而采取的是进行全表扫描一遍,这样的查询就会变得很慢。如果使用0来代替null,即为第二条SQL语句,则数据库查询运行速度的就会提高

精准快于全表:

很明显,第一条SQL语句的执行速度要比第二条SQL语句快的多。因为第一条SQL语句使用的是精准查询,索引查询;第二条SQL语句是将表中所有的数据都检索一遍,相当于全表查询,这样是很消耗时间的和资源的。

查询的数据库数据量变得很大

当你SQL Server 中所查询的数据量很大时,也会造成你的数据库很慢。

比方说 :我有一个数据量达到几百万的商品表,现在我需要查里面某些商品的信息,这样的查询也会很慢哦!例如:

表中数据上百万的数据量,要在这海量的数据中找到你所需要的商品信息,如果你写上这样的SQL语句,查询速度必须慢!

解决方案:

使用索引:

//--建立索引

这样的情况下,可以明显增加查询时间。因为使用了索引,可以在海量的数据中,快速的找到你所需要的信息,而不是在上百万的表数据中,一个个的检索到你所需要的信息。

数据库发生死锁现象

我们知道当程序发生死锁现象之后,程序就会卡在那个位置会变得很慢,很慢甚至一点都不动。所以,当你的SQL语句出现死锁现象之后,数据库查询也会很慢!

数据库死锁现象是指:两个或者是两个以上的SQL语句,争相访问同一个数据表,并且在第一天SQL语句访问表的时候,同时将数据表给锁住了。就会造成第二条,第三条SQL语句不能访问到表而进行迟迟等待。如果没有人员原因干预的话,就是一直处于这种状态下,所以叫做死锁。

解决方法:

这种SQL语句发送死锁现象,一般都是bug造成的。修改程序的逻辑顺序,给出一个合适的程序执行逻辑顺序。避免同时锁定两个资源的现象发生。给SQL语句安排一个先后顺序。

I/O 执行响应时间太长

我们都知道木桶原理,决定盛水多少的,不是长木板而是那些短木板。同样,对于数据库而言 ,电脑系统的硬件设备 ——磁盘I/O 则是短木板。在程序执行中,我们经常会发现系统中的I/O,一直在不停地执行,而CPU却在清闲的等待。造成这种原因的发生是因为,磁盘的I/O(即磁盘的读写速度)远远跟不上CPU的处理速度。

优化方案:尽可能的将程序放到内存中去执行

当读写I/O响应速度跟不上时,增加硬盘的个数,扩大存储

尽可能的选择一些读写速度高的磁盘来解决问题(ssd)

End

当第二天打开电脑时,发现数据库变得缓慢时,不妨试一试上面的方法,一定可以有意想不到的惊喜收获。

mysql数据库出现缓慢_MySQL查询缓慢的N种原因,以及N+1种解决方法相关推荐

  1. nodejs连接mysql数据库,报错Client does not support authentication protocol requested by server的解决方法

    nodejs连接mysql数据库,报错Client does not support authentication protocol requested by server的解决方法 参考文章: (1 ...

  2. mysql 数据库生命周期_MySQL查询的生命周期

    当你执行一次MySQL查询时,有没有仔细想过,在查询结果返回之前,经过了哪些步骤呢?这些步骤有可能消耗了超出想象的时间和资源.因此,在对MySQL的查询进行优化之前,应该了解一下MySQL查询的生命周 ...

  3. mysql数据库 查找数据类型_Mysql查询数据库表结构以及字段类型并展示

    1.建表语句sys_user CREATE TABLE `sys_user` ( `id` varchar(32) NOT NULL COMMENT '编号', `dept_id` varchar(3 ...

  4. mysql普通索引命中_MySQL中因字段字符集不同导致索引不能命中的解决方法

    什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有 ...

  5. MySql 数据库 - 安装时提示缺失VCRUNTIME140_1.dll文件导致的无法启动此程序解决方法,vc++2015-2019运行库集合包获取

    VCRUNTIME140_1.dll 是 vc++ 运行库里的 dll 文件,缺失这个只需要我们把 vc++ 运行库重新装下就好了. 我这提供了 vc++2015-2019 的集合安装包,可以一键解决 ...

  6. MySQL数据库应用 多表查询_mysql数据库-多表查询

    今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: ​ 数据库的创建 : create ...

  7. mysql数据库优化命令_MySQL数据库优化总结

    一个:MySQL标准数据库优化注意事项 1.数据库设计(表设计合理)三范式(规范的模式) 三范式包含: 第一范式:1NF是对属性的原子性的约束.要求属性具有原子性,不可再分解.(仅仅要是关系型数据库都 ...

  8. mysql 一周一月_mysql查询当天、本周,本月,上一个月的数据

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...

  9. kettle 查询数据库写入文件_怎么连接数据库-详解如何用kettle连接mysql数据库并导出sql查询结果...

    概述 今天主要介绍下kettle怎么去连接mysql数据库及导出sql查询结果. 1.数据库链接驱动 如果没有安装对应的数据库驱动,在数据库连接的过程中,可能会报某个数据库连接找不到的异常,因此需要下 ...

最新文章

  1. jquery.ajax
  2. java中获取错误,在简单程序中获取分段错误
  3. Python数值类型:小数与百分数的转换
  4. oracle中使用sys_connect_by_path进行表中行值连接
  5. 使用递归计算1-n之间的和
  6. python对文件每行数据计算_如何在python中对pandas数据帧的每一行进行计算?
  7. OKHTTP好文推荐
  8. 阿里云工程师用机器学习破解雾霾成因
  9. python numpy 索引_Python numpy中布尔索引的问题。
  10. bzoj 1601: [Usaco2008 Oct]灌水(最小生成树)
  11. IOS UIAlertView 提示视图
  12. 大火的何铠明:MAE——用于计算机视觉的可扩展自监督学习神器
  13. python|数据分析
  14. excel打不开_2016EXCEL表格打不开,提示格式与文件扩展名指定的格式不一致,这么做!...
  15. matlab怎么显示bfm模型的纹理模型,【计算机视觉基础】如何通过BFM模型得到人脸关键特征点的信息...
  16. 人群异常聚集识别监测
  17. 基于Selenium和ChromeDriver的自动化页面性能测试
  18. pythonidle如何调字体_python IDLE 背景以及字体的修改
  19. 中国就业薪酬最高的十所大学
  20. python爬取历年高考分数线——预测2018年高考分数线

热门文章

  1. 一个扫描器搞定TCP协议所有问题
  2. 记忆力也靠后天培养!22个方法激发最强大脑
  3. injected stylesheet注入样式导致el-button内文字为空白
  4. js 数组扁平化和树之间相互转换
  5. kubernetes之volumes使用
  6. angular监听输入框值的变化_angular 实时监听input框value值的变化触发函数
  7. nn.Flatten()函数详解及示例
  8. Android 如何加载网页、图片以及PDF文件之项目实战
  9. shell程序设计小知识
  10. TikZ宏包子库汇总和简介