昨天查询数据库的时候是正常的。今天早上来上班的时候,SQL语句查询突然变得很慢。相信你一定遇到过这样的情况。现在就让小编带你了解其中的原因吧!本文简单总结了可能导致数据库查询慢的原因,希望能为后续的查询优化提供指导。SQL语句查询突然变得很慢,常见的情况有以下几种:电脑系统内存不足:就像我们的电脑一样,当内存不足的时候,就会变得很卡!网速突然变慢:当网络速度变慢时,HTTP请求也会变慢!你写的SQL语句不是最好的解决方法有两个原则:两个比一个快:在第一个SQL语句中,where查询语句中出现了null,这样一来,数据库的引擎就不会使用索引了,但是会扫描一次整个表,这样的查询会变得很慢。如果使用0而不是null,即第二条SQL语句,数据库查询会比整个表运行得更快:显然,第一条SQL语句的执行速度要比第二条SQL语句快很多。因为第一条SQL语句使用了精确查询和索引查询;第二条SQL语句把表中的所有数据都取出来,相当于全表查询,非常耗时耗资源。查询的数据库数据量变得非常大。当你的SQLServer中查询的数据量很大时,也会导致你的数据库非常慢。比如:我有一个商品表,里面有几百万条数据,现在要查询里面的一些商品的信息,这样查询会很慢!比如:表中几百万条数据的数据量,应该在这海量的数据中找到你需要的产品信息。如果写这样的SQL语句,查询速度一定很慢!解决方法:使用index://--这种情况下,查询时间会明显增加。因为索引的使用,你可以在海量数据中快速找到你需要的信息,而不是在百万表数据中一个一个地检索你需要的信息。数据库发生死锁我们知道,当程序死锁时,程序会卡在那个位置,变得很慢、很慢甚至根本不动。所以,当你的SQL语句出现死锁现象时,数据库查询也会很慢!数据库死锁现象是指:两条或多条SQL语句竞争访问同一个数据表,而在**SQL语句访问表时,数据表同时被锁住。会导致第二条和第三条SQL语句访问不到表,等待很长时间。如果没有人为干预,它会一直处于这种状态,所以称为死锁。解决方法:这种SQL语句发送死锁现象一般是bug引起的。修改程序的逻辑顺序,为程序执行给出合适的逻辑顺序。避免同时锁定两个资源的现象。为SQL语句安排一个顺序。I/O执行响应时间过长。我们都知道木桶的原理。决定能装多少水的不是长木板,而是短木板。同样,对于数据库来说,计算机系统的硬件设备——磁盘I/O是一块短板。在程序执行过程中,我们经常会发现系统中的I/O一直在不断地执行,而CPU却在空等。这是因为磁盘的I/O(即磁盘的读写速度)远远落后于CPU的处理速度。优化方案:把程序尽量放在内存中去执行。当读写I/O的响应速度跟不上时,增加硬盘数量,扩展存储。尽量选择一些读写速度高的磁盘解决问题(ssd)结束第二天打开电脑发现数据库变慢了,不妨试试上面的方法,你一定会有意想不到的惊喜。
