SQL缓存问题,第一次查慢,第二次查快 10

请问,当执行一个SQL语句时,第一次查时间很慢,第二次查会快非常的多(尽管第二次查的条件有所不同,如第一次查的条件是姓名=‘张三’第二次查的条件是如姓名=‘李四’)。。。... 请问,当执行一个SQL语句时,第一次查时间很慢,第二次查会快非常的多(尽管第二次查的条件有所不同,如第一次查的条件 是 姓名=‘张三’ 第二次查的条件是 如姓名=‘李四’)。。。

请问是为什么呢,网上说的是缓存问题。。。那这么说来缓存并不是直接读第一次查到数据了,因为第二次查出来的数据因为条件不一样而变化,那它读的缓存读的是什么呢,执行计划?

另外,假如我程序其中的一条语句执行起来很慢,第二次就会快,但由于这条语句经常会被执行,那我能不能将这个缓存强制存起来,以后每次查询都可以有 如第二次查询的那样速度效果呢、

谢谢!!
我说的快不仅仅是条件一样的快,而是且条件不一样时也是快很多啊
如我第一次查询 select ************* where 姓名='张三' 可能要1分钟()
第二次查询 select ************* where 姓名='李四' 很快,可能只需要5秒
第三次查询 select ************* where 姓名='张三' 这次也很快,可能也只是几秒
条件已经不是一样的了,所以应该不能读上次一次所查到的结果集了吧
展开
 我来答
ttpsan520
2014-05-21 · TA获得超过404个赞
知道小有建树答主
回答量:312
采纳率:100%
帮助的人:314万
展开全部
是一个内存常驻的问题,
但是实际上是你的表缺少索引,你在姓名列添加索引 就不会有这种情况了。
产生的原因可能:你的表行数很多,由于没有添加索引,需要进行全表扫描,第一次需要从物理磁盘中将全表加载到内存中,很慢。第二次因为全表在内存中 所以查找很快。
如果添加了索引的话,就不需要全表扫描,即使第一次也不需要加载全表数据
来自:求助得到的回答
射手幽灵伊
2013-08-26 · TA获得超过2716个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:1971万
展开全部
查询时,数据库引擎会判断,如果数据在内存中,则会从内存读取数据,如果数据不在内存在,则先从硬盘读到内存,然后再供查询。
所以第一次查的时候,根据你的语句,数据库引擎会把一些数据从硬盘读到内存,第二次再查的时候,就从内存读数据,就快了很多了。

oracle有一个功能是让表常驻内存。
追问
我指的快,不仅是查询条件一样,查询条件不一样时也快啊 如第一次姓名为张三,第二次为李四
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qiushiji
2013-08-26 · TA获得超过502个赞
知道小有建树答主
回答量:560
采纳率:100%
帮助的人:523万
展开全部
ykj_fj的答案是正确的。
从内存中读取数据的速度要比从硬盘中读取的速度快的多。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式