求快速统计海量数据中符合条件的记录数量

时间:2021-03-01 23:31:30
我有一个表,大约几百万条数据,使用select count(1) from table1 where ***
统计符合条件的记录数太慢

请问有没有什么方法能提高统计速度呀?(表上有一个簇索引和一个非簇索引,建了索引统计速度是快点,但只是相对快点,总的来说还是慢)

14 个解决方案

#1


一般这种情况都是靠索引,如果觉得索引都很慢就不知道怎么办了。关注一下

#2


索引 或者加很多的条件

#3


有没有统计视图?

#4


是在查询分析器里都慢吗?

#5


1 SQL语句优化。
2 索引。
3 硬件升级。

#6


从表设计上入手,能否把表结构拆开成两个表
把像text这样的字段单独放到一个表里

#7


从表设计上入手,能否把表结构拆开成两个表
把像text这样的字段单独放到一个表里
-------------------------------------------------
表里确实是存在text字段,但查询条件里有关于text的判断(全文查询),而且现在text字段中的数据不会超过500个字符,如果分开就需要两个表再连接,是不是得不偿失呢?

我用的是分页的存储过程,当第一页的时候统计这个数量,第二页以后就不统计了,发现不统计的时候速度很快(不到一秒),可是第一页统计的时候就很慢,今天居然还超时了一次

使用web查询和使用查询分析器都差不多

#8


大家说向google和baidu这样的,我想他们肯定是将查询关键字及其数量都保存起来,然后我们输入关键字查询的时候,不是现去统计,而是从那个关键字表(或其他存储方式)中找相应关键字及其数量,然后显示.

但问题是,当我输入一个关键字,是没有人查询过的(也就是关键字表中没有这个关键字的时候),他怎么办的?现去统计?那岂不是也很慢吗?可我从来就没有遇到过慢的时候呀!(好象最慢也没有超过1秒的)

#9


什么数据库?如果是access有可能这么慢
大型数据库,几百万条数据,查询count(1)应该在10秒左右,你检查下索引吧

#10


CathySun118(斯年) 
10秒左右已经不能满足我的要求了,因为不统计数量的时候用不了1秒,可是一统计就要白白多9秒多的时间

我也知道数据量越多统计就越慢,因为不管怎么说,就算有索引不至于全表扫描,但如果查询结果有几万甚至几十万,那统计的时候和全表扫描还有什么区别?

所以我想问的是:有什么其他方法能让我获取一个大概的数量,不要求精确(但也不能差的太离谱),但要求快速,就好象上边说的百度和google一样

#11


要说的大家都说了,我没有更好的办法了,只能关注一下,等待高手,呵呵

#12


关注,表里有1亿多数据,每月大概还要增加260多万数据。查询速度慢。

#13


关注
希望有高手能提出合理的解决办法!

#14


http://topic.csdn.net/t/20021227/00/1303705.html

#1


一般这种情况都是靠索引,如果觉得索引都很慢就不知道怎么办了。关注一下

#2


索引 或者加很多的条件

#3


有没有统计视图?

#4


是在查询分析器里都慢吗?

#5


1 SQL语句优化。
2 索引。
3 硬件升级。

#6


从表设计上入手,能否把表结构拆开成两个表
把像text这样的字段单独放到一个表里

#7


从表设计上入手,能否把表结构拆开成两个表
把像text这样的字段单独放到一个表里
-------------------------------------------------
表里确实是存在text字段,但查询条件里有关于text的判断(全文查询),而且现在text字段中的数据不会超过500个字符,如果分开就需要两个表再连接,是不是得不偿失呢?

我用的是分页的存储过程,当第一页的时候统计这个数量,第二页以后就不统计了,发现不统计的时候速度很快(不到一秒),可是第一页统计的时候就很慢,今天居然还超时了一次

使用web查询和使用查询分析器都差不多

#8


大家说向google和baidu这样的,我想他们肯定是将查询关键字及其数量都保存起来,然后我们输入关键字查询的时候,不是现去统计,而是从那个关键字表(或其他存储方式)中找相应关键字及其数量,然后显示.

但问题是,当我输入一个关键字,是没有人查询过的(也就是关键字表中没有这个关键字的时候),他怎么办的?现去统计?那岂不是也很慢吗?可我从来就没有遇到过慢的时候呀!(好象最慢也没有超过1秒的)

#9


什么数据库?如果是access有可能这么慢
大型数据库,几百万条数据,查询count(1)应该在10秒左右,你检查下索引吧

#10


CathySun118(斯年) 
10秒左右已经不能满足我的要求了,因为不统计数量的时候用不了1秒,可是一统计就要白白多9秒多的时间

我也知道数据量越多统计就越慢,因为不管怎么说,就算有索引不至于全表扫描,但如果查询结果有几万甚至几十万,那统计的时候和全表扫描还有什么区别?

所以我想问的是:有什么其他方法能让我获取一个大概的数量,不要求精确(但也不能差的太离谱),但要求快速,就好象上边说的百度和google一样

#11


要说的大家都说了,我没有更好的办法了,只能关注一下,等待高手,呵呵

#12


关注,表里有1亿多数据,每月大概还要增加260多万数据。查询速度慢。

#13


关注
希望有高手能提出合理的解决办法!

#14


http://topic.csdn.net/t/20021227/00/1303705.html