데이터 베이스 MySQL 튜토리얼 用merge into进行性能优化

用merge into进行性能优化

Jun 07, 2016 pm 05:33 PM

有时候开发组有这么一个需求,一个表和它的备份表,把备份表中的某些字段替换到原表中,当数据量非常大的时候就很很慢,这个时候

有时候开发组有这么一个需求,一个表和它的备份表,把备份表中的某些字段替换到原表中,当数据量非常大的时候就很很慢,这个时候如果我们用merge into往往会提高几倍的性能,下面我们来做个实验:

SQL> drop table test1 purge;

表已删除。

SQL> drop table test2 purge;

表已删除。

SQL> create table test1 as select * from dba_objects;

表已创建。

SQL> alter table test1 nologging;

表已更改。

SQL> begin
2 for i in 1 .. 5 loop
3 insert /*+append*/
4 into test1
5 select * from dba_objects;
6 commit;
7 end loop;
8 end;
9 /

PL/SQL 过程已成功完成。
SQL> update test1 set object_id = rownum;

已更新303258行。

SQL> commit;

提交完成。

SQL> create table test2 as select * from test1;

表已创建。

SQL> select count(*) from test1;

COUNT(*)
----------
303258

SQL> select count(*) from test2;

COUNT(*)
----------
303258

SQL> create index ind_object_id1 on test1(object_id) nologging;

索引已创建。

SQL> create index ind_object_id2 on test2(object_id) nologging;

索引已创建。

SQL> exec dbms_stats.gather_table_stats(user,'test1');

PL/SQL 过程已成功完成。

SQL> exec dbms_stats.gather_table_stats(user,'test2');

PL/SQL 过程已成功完成。

SQL> set timing on
SQL> set autotrace traceonly
SQL> update test1 t1
2 set t1.object_type = (select object_type
3 from test2 t2
4 where t1.object_id = t2.object_id);

已更新303258行。

已用时间: 00: 00: 13.07

执行计划
----------------------------------------------------------
Plan hash value: 2560893763

-----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | 303K| 4146K| 949 (2)| 00:00:12 |
| 1 | UPDATE | TEST1 | | | | |
| 2 | TABLE ACCESS FULL | TEST1 | 303K| 4146K| 949 (2)| 00:00:12 |
| 3 | TABLE ACCESS BY INDEX ROWID| TEST2 | 1 | 14 | 4 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN | IND_OBJECT_ID2 | 1 | | 3 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

4 - access("T2"."OBJECT_ID"=:B1)


统计信息
----------------------------------------------------------
330 recursive calls
338515 db block gets
1250542 consistent gets
1 physical reads
107333692 redo size
673 bytes sent via SQL*Net to client
701 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
303258 rows processed

SQL> commit;

提交完成。

已用时间: 00: 00: 00.00
SQL> merge into test1 t1
2 using test2 t2
3 on (t1.object_id = t2.object_id)
4 when matched then
5 update set t1.object_type = t2.object_type;

303258 行已合并。

已用时间: 00: 00: 03.87

执行计划
----------------------------------------------------------
Plan hash value: 520388833

--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | MERGE STATEMENT | | 303K| 5923K| | 4947 (2)| 00:01:00 |
| 1 | MERGE | TEST1 | | | | | |
| 2 | VIEW | | | | | | |
|* 3 | HASH JOIN | | 303K| 53M| 30M| 4947 (2)| 00:01:00 |
| 4 | TABLE ACCESS FULL| TEST2 | 303K| 26M| | 957 (3)| 00:00:12 |
| 5 | TABLE ACCESS FULL| TEST1 | 303K| 26M| | 957 (3)| 00:00:12 |
--------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

3 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")


统计信息
----------------------------------------------------------
378 recursive calls
310584 db block gets
8547 consistent gets
3751 physical reads
76712320 redo size
678 bytes sent via SQL*Net to client
671 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
303258 rows processed

SQL> commit;

提交完成。

更多

linux

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

상위 10 개 글로벌 디지털 가상 통화 거래 플랫폼 순위 (2025 권위있는 순위) 상위 10 개 글로벌 디지털 가상 통화 거래 플랫폼 순위 (2025 권위있는 순위) Mar 06, 2025 pm 04:36 PM

2025 년에 Global Digital Virtual Currency Trading Platform은 2025 년에 트랜잭션 볼륨, 보안 및 사용자 경험과 같은 지표를 기반으로 전 세계 10 대 디지털 가상 통화 거래 플랫폼을 권위있게 발표합니다. OKX는 강력한 기술 강점과 글로벌 운영 전략으로 1 위를 차지했으며 Binance는 높은 유동성과 낮은 수수료와 밀접한 관련이 있습니다. Gate.io, Coinbase 및 Kraken과 같은 플랫폼은 각각의 장점과 함께 최전선에 있습니다. 이 목록에는 Huobi, Kucoin, Bitfinex, Crypto.com 및 Gemini와 같은 거래 플랫폼이 각각 고유 한 특성을 지니고 있지만 투자는 신중해야합니다. 플랫폼을 선택하려면 보안, 유동성, 수수료, 사용자 경험, 통화 선택 및 규제 준수와 같은 요소를 고려해야합니다.

숫자의 가장 큰 소인수를 찾는 C 프로그램 숫자의 가장 큰 소인수를 찾는 C 프로그램 Aug 27, 2023 am 10:09 AM

소인수−수론에서 양의 정수의 소인수는 정확히 소수로 나누어지는 소수입니다. 이 숫자를 찾는 과정을 정수 인수분해 또는 소인수분해라고 합니다. 예−288의 소인수는 다음과 같습니다: 288=2x2x2x2x2

2025 년 통화 서클의 10 대 교환 최신 디지털 통화 앱 순위 2025 년 통화 서클의 10 대 교환 최신 디지털 통화 앱 순위 Feb 27, 2025 pm 06:33 PM

상위 10 개의 가상 통화 거래 플랫폼 순위 (2025 년 최신) : BINANCE : 글로벌 리더, 높은 유동성 및 규제가 주목을 끌었습니다. OKX : 대규모 사용자 기반, 여러 통화를 지원하며 레버리지 거래를 제공합니다. Gate.io : 다양한 화폐 통화 지불 방법을 갖춘 선임 교환으로 다양한 거래 쌍 및 투자 제품을 제공합니다. BITGET : 파생 상품 교환, 높은 유동성, 낮은 수수료. HUOBI : 다양한 통화 및 거래 쌍을 지원하는 오래된 교환. 코인베이스 : 잘 알려진 미국 교환으로 엄격하게 규제되었습니다. Phemex 등.

상위 10 개 디지털 통화 거래 플랫폼 상위 10 개 디지털 통화 거래 플랫폼의 최신 목록 상위 10 개 디지털 통화 거래 플랫폼 상위 10 개 디지털 통화 거래 플랫폼의 최신 목록 Mar 17, 2025 pm 05:57 PM

상위 10 개 디지털 통화 거래 플랫폼 : 1. OKX, 2. BINANCE, 3. GATE.IO, 4. HUOBI GLOBAL, 5. KRAKEN, 6. COINBASE, 7. KUCOIN, 8. BITFINEX, 9. CRYPTO.COM, 10. GEMINI, 자체 특성을 보유하고 있으며,이 교환은 보안, 요소, 보안, 사용자를 기반으로하는 플랫폼을 선택할 수 있습니다.

디지털 통화 앱을위한 상위 10 개 트레이딩 플랫폼, 정기 통화 추측 플랫폼 앱 권장 사항 디지털 통화 앱을위한 상위 10 개 트레이딩 플랫폼, 정기 통화 추측 플랫폼 앱 권장 사항 Mar 07, 2025 pm 06:51 PM

이 기사는 10 개의 디지털 거래 앱을 권장한다. 플랫폼을 선택할 때 보안, 유동성, 거래 수수료, 통화 선택, 사용자 인터페이스, 고객 서비스 지원 및 규제 준수와 같은 요소를 고려하고 위험을 신중하게 평가하고 맹목적으로 추세를 따르지 않아야합니다.

세계 10 대 10 가상 통화 거래 플랫폼 앱 진짜 다운로드 및 설치 자습서 세계 10 대 10 가상 통화 거래 플랫폼 앱 진짜 다운로드 및 설치 자습서 Mar 12, 2025 pm 05:33 PM

이 기사는 Binance, Okx, Gate.io, Huobi Global, Coinbase, Kucoin, Kraken 및 Bitfinex와 같은 주류 디지털 통화 거래 플랫폼에 대한 Android 및 Apple Mobile 앱 다운로드 방법을 제공합니다. Android 사용자이든 Apple 사용자이든 상관없이 해당 플랫폼의 공식 앱 다운로드 링크를 쉽게 찾아 단계에 따라 설치를 완료 할 수 있습니다. 이 기사는 해당 공식 웹 사이트 또는 앱 스토어에서 검색 및 다운로드에 대한 자세한 지침을 제공하며 Android에 APK 파일을 설치하는 특별 단계에 대한 지침을 제공하여 사용자가 빠르고 쉽게 다운로드하여 사용할 수 있습니다.

신뢰할 수있는 디지털 통화 플랫폼은 무엇입니까? 신뢰할 수있는 디지털 통화 플랫폼은 무엇입니까? Mar 17, 2025 pm 05:45 PM

신뢰할 수있는 디지털 통화 플랫폼은 다음과 같습니다. 1. OKX, 2. BINANCE, 3. GATE.IO, 4. HUOBI GLOBAL, 5. COINBASE, 7. BITFINEX, 9. CRYPTO.com, GEMINI는 이들 교환을 기반으로하는 플랫폼을 선택할 수 있습니다.

상위 10 개 디지털 통화 앱 거래 플랫폼 Top10 가상 통화 앱 2025 순위 상위 10 개 디지털 통화 앱 거래 플랫폼 Top10 가상 통화 앱 2025 순위 Mar 13, 2025 pm 07:00 PM

상위 10 개는 다음과 같습니다. 순위는 플랫폼 유동성, 통화 선택, 보안, 사용자 경험, 수수료 및 규정 준수와 같은 포괄적 인 고려 사항을 기반으로하지만 투자는 신중하고 자신의 위험에 처해 있어야합니다.

See all articles