
正文
包含pg数据库初次查询太慢的词条
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
一条复杂的SQL语句,为什么第一次查询很慢,而第二次查询却明显快了
1、产生的原因可能:你的表行数很多,由于没有添加索引,需要进行全表扫描,第一次需要从物理磁盘中将全表加载到内存中,很慢。第二次因为全表在内存中 所以查找很快。
2、第一次调用时,数据可能在硬盘上,第二次调用后,数据库数据在内存中有缓存,是内存中给出结果的,所以当然快了。
3、第一次可能需要10分钟,第二次可能只需要2秒。就是因为数据库缓存的缘故。如果是ms sqlsever,你在查询前增加一句 SET STATISTICS IO ON ,第二次就没有预读了即IO读。
4、第二次查询快是因为第一次查询结果放在缓存中所以快了。换个查询内容、条件和表就会跟第一次查询一样慢。建立好索引可以大大加快查询速度。
5、也许是原先缓存的表值被age out出去了。
6、Sql Server 第一次查询时要对语句进行编译,会消耗一定的时间。并且查询结果会有缓存,如果第二次和第一次查询的时间间隔不是很长的话,可以从缓存中读取结果。
相关问答
Q1: 最近我的数据库(sql)查询速度很慢,这是什么原因???
经验显示,SQL Server性能的最大改进得益于逻辑的数据库设计、索引设计和查询设计方面。反过来说,最大的性能问题常常是由其中这些相同方面中的不足引起的。
开销,降低磁盘操作。坏处就是查询时会慢些。第二:把这100W行横向切成很多个表,比如每个月的记录装在一个表里,这样每个表的记录数可能只有几万,查询,更新都会快很多。坏处是查询,更新都不如原来好写。
原因也很简单,TASK_DATE 字段区分度太低了,走这个索引需要扫描的行数很大,而且还要进行额外的排序,优化器综合判断代价更大,所以就不选这个索引了。
对于这种查询慢的问题需要仔细分析,首先要确保系统中的资源足够,尤其是内存,内存太小的时候查询速度是很难快的,而且速度也不稳定,另外像:数据量、表合理的索引、查询语句的写法也都会影响到查询的速度。
查询缓慢也有很多原因,不仅是你的查询语句问题,有时候和你硬件也有关系。
查询慢, 可能涉及很多原因.是 单表查询? 还是多表查询?这个表数据量有多少? 这个表会不会 一直有别的程序,向这个表插入数据的?如果是这种情况下, 可能是别的程序插入数据的时候,临时锁定了这个表, 导致查询慢。
Q2: 我的程序,查询数据库很慢。请问怎么提高查询速度
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) I/O吞吐量小,形成了瓶颈效应。 没有创建计算列导致查询不优化。
可通过变量slow_query_long来开启慢查询,默认是关闭状态,可以将慢日志记录到表slow_log或文件中,以供检查分析。 响应时间响应时间是两个部分之和: 服务时间和排队时间。 服务时间是指数据库处理这个查询真正花费了多长时间。
减少表的行数筛选出你仅需要的数据可以大大提高查询的速度。如何筛选数据完全取决于你要解决的问题。
如果业务量很大,还可将切分后的库做主从架构,进一步避免单个库压力过大。
关于pg数据库初次查询太慢和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







