首页 新闻 会员 周边

数据缓存 sql 怎么让 反复查询的sql语句 执行时间变短?

0
[已解决问题] 解决于 2016-08-23 13:59

数据缓存 sql 怎么让  反复查询的sql语句 执行时间变短?

问题补充:

1:我执行了单表sql查询,由于数据量大,查询时间过长

2:我第二次执行了 这条sql,查询的时间同样过长

3:在 数据库里根据sql缓存执行计划,当遇到相同的sql可以 用之前的执行计划。

4:在 内存里也可以根据 key-value: sql语句-数据集来缓存数据。

推荐几个博客呗:step by step 的那种

铁打接班人流水打工人的主页 铁打接班人流水打工人 | 小虾三级 | 园豆:897
提问于:2016-08-23 09:35
< >
分享
最佳答案
0

在SQL Server中,每次查询table,都会将table缓存到内存中,如果是对单表查询,建议创建index,这样,在查询时,会将index 结构缓存到内存中,减少查询的时间

奖励园豆:5
悦光阴 | 老鸟四级 |园豆:2251 | 2016-08-23 10:43
其他回答(4)
0

单表执行还查询时间过长,难道数据量数以亿计???

顾晓北 | 园豆:10844 (专家六级) | 2016-08-23 09:40

222530 条吧

@湖光滟滟秋: 单表,20多W条还慢?我是说整个表,整个表就这20多W数据么?

支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2016-08-23 09:54
0

你贴一下你的表的schema和查询语句。

Daniel Cai | 园豆:10424 (专家六级) | 2016-08-23 10:07

SELECT COUNT(*)FROM basedata..booking_hotels

@湖光滟滟秋: 

select c.row_count

from sys.indexes a ,

sys.objects b ,

sys.dm_db_partition_stats c

where a.[object_id] = b.[object_id]

AND b.[object_id] = c.[object_id]

AND a.index_id = c.index_id

AND a.index_id < 2

AND b.is_ms_shipped = 0

and a.name=....

 

你这种count(*)不带条件索引没用。

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2016-08-23 11:32
0

可以考虑增加一个redis缓存

伪善者ql | 园豆:250 (菜鸟二级) | 2016-08-23 11:05
0

20万条数据,就有速度问题,这是一个大问题,通常是要2千万条或者2亿条才考虑速度问题的,

至于问题在哪儿,不一定是数据库查询,有可能是软件代码,设计方案等。

爱编程的大叔 | 园豆:30839 (高人七级) | 2016-08-23 14:10

在 数据库里执行sql的时候发现 执行特别慢

@湖光滟滟秋: 这样的话几个可能

1、电脑太差

2、数据表没加索引

3、查询语句最好可以提供看看,但是单表就算是没索引的话20万行都不应该太慢的,所以给慢一个准确的数量级单位,几秒,几毫秒,几十秒,这些都有助于答疑。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2016-08-23 14:24

@爱编程的大叔: 查了50秒 

清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册