首页 新闻 搜索 专区 学院

数据库缓存的问题

0
悬赏园豆:5 [已解决问题] 解决于 2016-04-14 10:13


select id,name from student where score > 90;
前提是query_cache是开启的,那么执行完这个语句之后,其中缓存的是score>90的记录的列d,name列呢,还是score>90的所有记录呢?

迷雾摆渡的主页 迷雾摆渡 | 初学一级 | 园豆:156
提问于:2016-04-13 15:21
< >
分享
最佳答案
1

楼主,拿你这一句来说“select id,name from student where score > 90;”,你把id和name调转过来“select name,id from student where score > 90;”这两条的查询所对应的缓存是不一样的,一定要是完全一样的sql语句。比如你开启了缓存,前一句sql语句查询所用时间是3秒,这条语句已经放入缓存了,然后你把这条语句再执行一遍,所用的时间就是0秒,因为已经你是直接查询的缓存。但是如果你把id,name换个顺序,再查询,这是建立了一个新的缓存,所以这个查询时间可能又是3秒钟了。所以你的问题,score>90肯定记录的是列id,name,而不是score>90的所有的列。

收获园豆:5
文艺委员 | 菜鸟二级 |园豆:213 | 2016-04-13 17:22
其他回答(2)
0

据我了解是缓存的这个select出来的结果集  应该只有id和name两个字段的,

默夜鳞飞 | 园豆:220 (菜鸟二级) | 2016-04-13 17:15
0

你可以每次都清理一下缓存,试试,这个还是比较靠谱的

DBCC DROPCLEANBUFFERS 

DBCC FREEPROCCACHE  

DBCC FREESYSTEMCACHE ( 'ALL' )

_Vegetables | 园豆:582 (小虾三级) | 2016-04-13 18:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册