select substr(busi_date,1,6),orgid,brhid,operway_0, count(operway_0), sum(matchamt)
from his_hx_orderrec where substr(busi_date,1,6) = busi_date group by substr(busi_date,1,6),orgid,brhid,operway_0;
如果直接SELECT * FROM his_hx_orderrec 只需要0.6秒就能检索出结果
SELECT * FROM his_hx_orderrec where substr(busi_date,1,6), = '200906' 这样一加就无法显示了,一直运行中,但奇怪的是如果后面的检索条件的值='200907'时,结果就能显示出来,只是等待时间会久点,其它条件则不能。。
加上另两个聚合函数和GROUP BY更加是显示不了,单独加GROUP BY不加其它也同样!!
望高手指点下。。应怎么处理,!!
11 个解决方案
#1
是ms-sql吗?
#2
substr(busi_date,1,6), = '200906'
不是MS-SQL吧
不是MS-SQL吧
#3
select substr(busi_date,1,6),orgid,brhid,operway_0, count(operway_0), sum(matchamt)
from his_hx_orderrec
where substr(busi_date,1,6) = busi_date
group by substr(busi_date,1,6),orgid,brhid,operway_0;
你的语句没错,是oracle的吧?
不过你的条件substr(busi_date,1,6) = busi_date 是否正确?
如果是这个条件,不如改为:length(busi_date) = 6
#4
因为使用到substr时,针对busi_date的索引也许失效.
#5
语句为ORCLE ,,语句是正确的。。现在问题是这是张历史数据表,数据量大。。busi_date在数据库里为八位的,,我现在截了六位的排序,,而且问题不出在这里,,我上面说的直接后面加WHERE 都只有七月的能运行,,八月的不能运行!!不知道原因。。。SQL语句是没问题的。因为有一张对应一样结构的表,为当前月所有数据的,同样的语句,在那张表里是可以运行的,但放到历史表中,我认为是数据量过大,而导致一直处于执行状态,不出结果!!
#6
substr(busi_date,1,6) = busi_date
busi_date 为传进的参数,没有问题的。。写的是存储过程,因为运行不了,所以把它拿出来自己跑SQL,
如:substr(busi_date,1,6), = '200906'
一加WHERE和GROUP BY 就运行不出结果了。。去掉直接SELECT * 是能马上检索出结果的
busi_date 为传进的参数,没有问题的。。写的是存储过程,因为运行不了,所以把它拿出来自己跑SQL,
如:substr(busi_date,1,6), = '200906'
一加WHERE和GROUP BY 就运行不出结果了。。去掉直接SELECT * 是能马上检索出结果的
#7
busi_date是字符型,还是日期型?
#8
#9
直觉是数据问题。
#10
busi_date 是INT型的,,
不是这方面的问题。上面说的,库里有张hx_orderrec和his_hx_orderrec一样的表,只是his_hx_orderrec存放的是所有历史记录都包括,所以数据量大的问题,同样的SQL把表名换成hx_orderrec是可以运行的。。
因为his_hx_orderrec里的数据量太大,所以一加WHERE和GROUP BY 就一直处于执行状态,等了很久也显示不出结果,望高手解答,,,!!!
不是这方面的问题。上面说的,库里有张hx_orderrec和his_hx_orderrec一样的表,只是his_hx_orderrec存放的是所有历史记录都包括,所以数据量大的问题,同样的SQL把表名换成hx_orderrec是可以运行的。。
因为his_hx_orderrec里的数据量太大,所以一加WHERE和GROUP BY 就一直处于执行状态,等了很久也显示不出结果,望高手解答,,,!!!
#11
没人能解答吗?这张表有70G的数据量。。
#1
是ms-sql吗?
#2
substr(busi_date,1,6), = '200906'
不是MS-SQL吧
不是MS-SQL吧
#3
select substr(busi_date,1,6),orgid,brhid,operway_0, count(operway_0), sum(matchamt)
from his_hx_orderrec
where substr(busi_date,1,6) = busi_date
group by substr(busi_date,1,6),orgid,brhid,operway_0;
你的语句没错,是oracle的吧?
不过你的条件substr(busi_date,1,6) = busi_date 是否正确?
如果是这个条件,不如改为:length(busi_date) = 6
#4
因为使用到substr时,针对busi_date的索引也许失效.
#5
语句为ORCLE ,,语句是正确的。。现在问题是这是张历史数据表,数据量大。。busi_date在数据库里为八位的,,我现在截了六位的排序,,而且问题不出在这里,,我上面说的直接后面加WHERE 都只有七月的能运行,,八月的不能运行!!不知道原因。。。SQL语句是没问题的。因为有一张对应一样结构的表,为当前月所有数据的,同样的语句,在那张表里是可以运行的,但放到历史表中,我认为是数据量过大,而导致一直处于执行状态,不出结果!!
#6
substr(busi_date,1,6) = busi_date
busi_date 为传进的参数,没有问题的。。写的是存储过程,因为运行不了,所以把它拿出来自己跑SQL,
如:substr(busi_date,1,6), = '200906'
一加WHERE和GROUP BY 就运行不出结果了。。去掉直接SELECT * 是能马上检索出结果的
busi_date 为传进的参数,没有问题的。。写的是存储过程,因为运行不了,所以把它拿出来自己跑SQL,
如:substr(busi_date,1,6), = '200906'
一加WHERE和GROUP BY 就运行不出结果了。。去掉直接SELECT * 是能马上检索出结果的
#7
busi_date是字符型,还是日期型?
#8
#9
直觉是数据问题。
#10
busi_date 是INT型的,,
不是这方面的问题。上面说的,库里有张hx_orderrec和his_hx_orderrec一样的表,只是his_hx_orderrec存放的是所有历史记录都包括,所以数据量大的问题,同样的SQL把表名换成hx_orderrec是可以运行的。。
因为his_hx_orderrec里的数据量太大,所以一加WHERE和GROUP BY 就一直处于执行状态,等了很久也显示不出结果,望高手解答,,,!!!
不是这方面的问题。上面说的,库里有张hx_orderrec和his_hx_orderrec一样的表,只是his_hx_orderrec存放的是所有历史记录都包括,所以数据量大的问题,同样的SQL把表名换成hx_orderrec是可以运行的。。
因为his_hx_orderrec里的数据量太大,所以一加WHERE和GROUP BY 就一直处于执行状态,等了很久也显示不出结果,望高手解答,,,!!!
#11
没人能解答吗?这张表有70G的数据量。。