您现在的位置是:群英 > 数据库 > MySQL数据库
数据库查询慢是什么情况,如何解决?
Admin发表于 2021-11-25 17:47:562068 次浏览

    数据库查询慢是什么情况?对于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的处理速度。

    优化方案:

    1. 尽可能的将程序放到内存中去执行

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

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

         关于可能导致数据库查询慢的原因及解决方案就分享到这,需要的朋友可以参考看看,希望本文能对大家解决数据库查询慢的问题有帮助。最后,想要了解更多请浏览其他相关的文章。

文本转载自网络

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: 数据库查询慢
相关信息推荐
2022-05-07 17:44:27 
摘要:mysql增加行的方法:1、用“INSERT INTO 表名 列名1,…列名n VALUES (值1…,值n);”语句,列名和值的顺序相对应;2、用“INSERT INTO 表名 SET 列名1=值1,列名2=值2,…;”语句插入一行数据。
2022-08-13 17:51:50 
摘要:区别:1、oracle使用rownum进行分页操作,rownum只能比较小于不能比较大于,因为该方法都是先查询后排序的;2、mysql使用limit进行分页操作,limit中的参数值不能在语句当中写计算表达式,需要提前计算。
2021-11-15 17:03:39 
摘要:数据库恢复技术有什么?数据库的重要性不多说,如果数据库出现什么问题,能实现恢复的话,那么就能大大减低损失。这篇我们就来了解几个常见的数据库恢复技术,感兴趣的朋友就继续往下看吧。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部