① 该sql语句该如何优化,两张表都是大数据量,急!!!
--试试这个,没有测试,因为没有数组arrchar定义和变量vc_libtype定义UPDATE--使用GROUP
BY
应该不会影响速度,才万级数据。我用我自己的表做的测试,一千四百万行数据查询时间大约是50秒。
r.recognisetype,
t.tano,
t.taaccountid,
count(1)
(SELECT
r.needrecognise,
FROM
cfg_custrisk
r,
ta_ack_acct
t
WHERE
r.tano
=
t.tano
r.recognisetype,
AND
r.taaccountid
=
t.taaccountid
AND
t.businesscode
='103'
AND
t.transactioncfmdate
>
TO_CHAR((sysdate-to_number(arrchar(1))),'yyyymmdd')
GROUP
BY
r.needrecognise,
t.tano,
t.taaccountid
HAVING
COUNT(1)
>
to_number(arrchar(2)
)
a
SET
a.needrecognise='1',
a.recognisetype
=vc_libtype;
② sql对100万条数据的查询和统计(主要是统计)效率提升
SELECT count(id)
FROM TBL_POS_SHOP s,
TBL_POS_POS p,
TBL_POS_CUSTOMER c,
TBL_POS_ORDER o,
TBL_POS_CARDINFO cd
WHERE o.POS_CATI = p.POS_CATI
and o.CUSTOMER_ID = c.ID
and o.SHOP_ID = s.ID
and o.CARDINFO_ID = cd.ID
③ 【SQL查询语句】数据筛选,百万数据时需1秒内查出
编写一个存储过程就ok,
create or replace procere cc( a varchar2)
as
begin
case a
when '江苏' then dbms_output.put_line('js');
when '江苏扬州' then dbms_output.put_line('jsyz');
else dbms_output.put_line('没有相应信息');
end case;
end;
调用 exec cc(江苏扬州);
我就写两个就不写了,你可以继续添加,就是一个case语句,也可以用if完成都一样。
④ SQL查询语句.GroupBy分组
用子查询取得最大时间的数据,然后再与另一个表关联
select*fromatdGroupChga
wherenotexists
(=a.emplIDandeffectDate>a.effectDate)
⑤ SQL几个数据表都有100万左右数据,几个表关联查询统计总数怎么提高查询性能
SELECT count(id)
FROM TBL_POS_SHOP s,
TBL_POS_POS p,
TBL_POS_CUSTOMER c,
TBL_POS_ORDER o,
TBL_POS_CARDINFO cd
WHERE o.POS_CATI = p.POS_CATI
and o.CUSTOMER_ID = c.ID
and o.SHOP_ID = s.ID
and o.CARDINFO_ID = cd.ID
首先,我觉得你找出各个表的关系,主从关系,主表放左边,依赖的表放右边,都用左连接,而不用现在这种内连接,
其次你的指定的count(id)请带上表的别名,你取得是哪个表的ID,否则系统区分不了,就会产生长时间等待。
⑥ 百万数据下几种SQL性能测试
由于在参与的实际项目中发现当mysql表的数据量达到百万级时,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速度简直无法容忍。曾经测试对一个包含400多万条记录(有索引)的表执行一条条件查询,其查询时间竟然高达40几秒,相信这么高的查询延时,任何用户都会抓狂。因此如何提高sql语句查询效率,显得十分重要。以下是网上流传比较广泛的30种SQL查询语句优化方法:
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
⑦ sql server 到底能否处理百万级,千万级的数据
sql server 到底能否处理百万级,千 最近又想起曾经被忽悠过n 次的问题。 刚毕业的时候,很多次去面试的时候被问及sql server 能处理能力, 以及上百万级别的数据的优化问题?我当然是说东又扯西的,说了一大堆方法 我吹你吹了半天后,得到的提问着告诉我的很轻描淡写的答案是:不行, sql server 不行,百万级别还是换oracle 好。 我当时总是很茫然的接受答案。因为我没玩过,我没发言权。(但是我搞 的缘由?是到今日,自己面试别人了,也还是不明白当时那些面试官的心态。) 。。。。。。两年时间过去了。。。。。。 我很有幸在一个小门户(其实也还好,不是那么小了),玩过百万级的数 据了。真是很荣幸还能玩到bbs 库这样的实时操作比较多的库。 当我再一次在面试中被问到sql server 的处理能力的时候,我能很有底 气的告诉他们sql server 能承受百万级别的处理能力,我也实践证明了它能。 这时候面试官总是表现得思维很敏捷,问题又很快出来了,处理千万级别的数 做。 我再次追问面试官给出的答案当然还是无情的否认了sql server。 。。。。。又两年时间过去了。。。。。。 目前又有幸玩门户的bbs,记录是过亿的。每天这过亿记录的表的查询次 数过了千万,我当然现在没有去面试,但是我还是真心的在这里希望不要碰到 问我sql server 处理百亿级,千亿级的数据的性能问题,更不希望告诉我答案 是换oracle。 sql server 我真为它难过。在这里我要为sql server 平反也想在此也问问各 位,目前用sql server 处理数据的级别和对它的看法,当然也可以评论下其他 人对sql server 的看法。
⑧ sql百万条数据中筛选重复条目
SELECTB,D,E,COUNT(1)FROMsheet1WITH(NOLOCK)GROUPBYB,D,EHAVINGCOUNT(1)>1;
--or
SELECTB,D,E,COUNT(1)FROMsheet1GROUPBYB,D,EHAVINGCOUNT(1)>1;
⑨ sql语句中groupby的使用
select id,name from tabwhere name in (select distinct name from tab)