목차
일괄 업데이트
性能分析
QUESTION:" >QUESTION:
SOLVE:" >SOLVE:
데이터 베이스 MySQL 튜토리얼 MySQL Advanced (14) 다양한 값 구현 방법을 가진 여러 레코드의 일괄 업데이트 및 일괄 업데이트

MySQL Advanced (14) 다양한 값 구현 방법을 가진 여러 레코드의 일괄 업데이트 및 일괄 업데이트

Feb 10, 2017 am 11:03 AM
일괄 업데이트

mysql 다양한 값 구현 방법을 사용하여 여러 레코드의 일괄 업데이트 및 일괄 업데이트

mysql에서는 🎜을 사용할 수 있습니다. >업데이트, 로 교체하여 운영하는데, 다음은 mysql 일괄 업데이트 및 성능에 대한 자세한 소개입니다.

일괄 업데이트

mysql업데이트 문은 매우 간단하며 데이터의 특정 필드를 업데이트합니다.

UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';
로그인 후 복사


동일한 필드를 동일한 값으로 업데이트하면 mysql도 매우 간단합니다. 🎜>어디그게 다입니다:

UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values');
로그인 후 복사


여기서 '

other_values'를 참고하세요 은 쉼표(,) 문자열로 구분됩니다. 예: 1,2,3

그런 다음 여러 데이터 조각을 다른 값으로 업데이트하면 많은 사람들이 다음과 같이 쓸 것입니다.

foreach ($display_order as $id => $ordinal) { 
    $sql = "UPDATE categories SET display_order = $ordinal WHERE id = $id"; 
    mysql_query($sql); 
}
로그인 후 복사


는 업데이트 기록을 하나씩 반복하는 것입니다. 기록은 한 번

업데이트하는데, 이는 성능이 저하되고 쉽게 차단될 수 있습니다.

그럼

sql 문을 사용하여 일괄 업데이트를 구현할 수 있나요? mysql은 일괄 업데이트를 구현하는 직접적인 방법을 제공하지 않지만 몇 가지 트릭을 사용하면 구현할 수 있습니다.

UPDATE mytable 
    SET myfield = CASE id 
        WHEN 1 THEN 'value'
        WHEN 2 THEN 'value'
        WHEN 3 THEN 'value'
    END
WHERE id IN (1,2,3)
로그인 후 복사

를 사용하여 일괄 업데이트를 수행하는 경우의 작은 트릭입니다.

예:

UPDATE categories 
    SET display_order = CASE id 
        WHEN 1 THEN 3 
        WHEN 2 THEN 4 
        WHEN 3 THEN 5 
    END
WHERE id IN (1,2,3)
로그인 후 복사


이 문장

sql은 , 업데이트를 의미합니다. display_order 필드, id=1 이면 display_order 값은 3, id=2 인 경우 display_order 의 값은 입니다. 4, id=3 인 경우 display_order 의 값은 <🎜입니다. > 5. 은 조건문을 함께 작성하는 것입니다.

여기서

where

부분은 코드 실행에 영향을 미치지 않지만 sql 실행 효율성을 향상시킵니다. sql 문이 수정해야 하는 행 수만 실행하는지 확인하세요. 여기서는 3개의 데이터만 업데이트됩니다. , where 절은 3 행의 데이터만 실행되도록 보장합니다. 여러 값을 업데이트하는 경우 약간만 수정하면 됩니다.

UPDATE categories 
    SET display_order = CASE id 
        WHEN 1 THEN 3 
        WHEN 2 THEN 4 
        WHEN 3 THEN 5 
    END, 
    title = CASE id 
        WHEN 1 THEN &#39;New Title 1&#39;
        WHEN 2 THEN &#39;New Title 2&#39;
        WHEN 3 THEN &#39;New Title 3&#39;
    END
WHERE id IN (1,2,3)
로그인 후 복사


여기까지는 하나 항목이 완료되었습니다.

mysql

문은 여러 레코드를 업데이트합니다. 하지만 비즈니스에서 사용하려면 서버측 언어와 결합해야 합니다. 여기서는

php

를 예로 들어 mysql 문:

$display_order = array( 
    1 => 4, 
    2 => 1, 
    3 => 2, 
    4 => 3, 
    5 => 9, 
    6 => 5, 
    7 => 8, 
    8 => 9 
); 
$ids = implode(&#39;,&#39;, array_keys($display_order)); 
$sql = "UPDATE categories SET display_order = CASE id "; 
foreach ($display_order as $id => $ordinal) { 
    $sql .= sprintf("WHEN %d THEN %d ", $id, $ordinal); 
} 
$sql .= "END WHERE id IN ($ids)"; 
echo $sql;
로그인 후 복사

这个例子,有8条记录进行更新。代码也很容易理解,你学会了吗

性能分析

当我使用上万条记录利用mysql批量更新,发现使用最原始的批量update发现性能很差,将网上看到的总结一下一共有以下三种办法:

1.批量update,一条记录update一次,性能很差

update test_tbl set dr=&#39;2&#39; where id=1;
로그인 후 복사


2.replace into 或者insert into ...on duplicate key update

replace into test_tbl (id,dr) values (1,&#39;2&#39;),(2,&#39;3&#39;),...(x,&#39;y&#39;);
로그인 후 복사


或者使用

insert into test_tbl (id,dr) values  (1,&#39;2&#39;),(2,&#39;3&#39;),...(x,&#39;y&#39;) on duplicate key update dr=values(dr);
로그인 후 복사


3.创建临时表,先更新临时表,然后从临时表中update

create temporary table tmp(id int(4) primary key,dr varchar(50));
insert into tmp values  (0,&#39;gone&#39;), (1,&#39;xx&#39;),...(m,&#39;yy&#39;);
update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;
로그인 후 복사


注意:这种方法需要用户有temporary 表的create 权限。

下面是上述方法update 100000条数据的性能测试结果:

逐条update

real 0m15.557s

user 0m1.684s

sys 0m1.372s

replace into

real 0m1.394s

user 0m0.060s

sys 0m0.012s

insert into on duplicate key update

real 0m1.474s

user 0m0.052s

sys 0m0.008s

create temporary table and update:

real 0m0.643s

user 0m0.064s

sys 0m0.004s

就测试结果来看,测试当时使用replace into性能较好。

replace into insert into on duplicate key update的不同在于:

replace into 操作本质是对重复的记录先delete insert,如果更新的字段不全会将缺失的字段置为缺省值

insert into 则是只update重复记录,不会改变其它字段。

QUESTION:

Error Code: 1175. You are using safe update mode and you tried to update a table without a 
WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.
로그인 후 복사

SOLVE:

原因是在safe mode,要强制安全点,update只能跟where, 要取消这个限制,可以:

SET SQL_SAFE_UPDATES=0;
로그인 후 복사

以上就是mysql进阶(十四) 批量更新与批量更新多条记录的不同值实现方法 的内容,更多相关内容请关注PHP中文网(www.php.cn)!


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Oracle 저장 프로시저를 사용하여 일괄 업데이트를 구현하기 위한 단계 및 예방 조치 Oracle 저장 프로시저를 사용하여 일괄 업데이트를 구현하기 위한 단계 및 예방 조치 Mar 08, 2024 pm 04:12 PM

제목: Oracle 저장 프로시저에 의한 일괄 업데이트 구현을 위한 단계 및 주의 사항 Oracle 데이터베이스에서 저장 프로시저는 데이터베이스 성능을 향상하고 코드를 재사용하며 보안을 강화하기 위해 설계된 SQL 문 집합입니다. 저장 프로시저는 데이터를 일괄 업데이트하는 데 사용할 수 있습니다. 이 문서에서는 Oracle 저장 프로시저를 사용하여 일괄 업데이트를 구현하고 특정 코드 예제를 제공하는 방법을 소개합니다. 1단계: 저장 프로시저 만들기 먼저 일괄 업데이트 작업을 구현하기 위한 저장 프로시저를 만들어야 합니다. 저장 프로시저를 생성하는 방법은 다음과 같습니다.

데이터 처리에서 Oracle 저장 프로시저 일괄 업데이트 적용 사례 데이터 처리에서 Oracle 저장 프로시저 일괄 업데이트 적용 사례 Mar 08, 2024 am 10:24 AM

데이터 처리에서 Oracle 저장 프로시저 일괄 업데이트 적용 사례 실제 데이터 처리에서는 데이터베이스에 있는 대량의 데이터를 업데이트해야 하는 경우가 많습니다. Oracle 데이터베이스는 이러한 대규모 일괄 데이터 업데이트 작업을 효과적으로 처리하고 데이터 처리 효율성과 성능을 향상시킬 수 있는 저장 프로시저 기능을 제공합니다. 본 글에서는 오라클 저장 프로시저의 일괄 업데이트 적용 사례를 소개하고, 독자들이 이 기능을 더 잘 이해하고 사용할 수 있도록 구체적인 코드 예제를 제공합니다. 사례 배경

Vue와 Excel의 암묵적 협력: 일괄 업데이트 및 데이터 가져오기를 수행하는 방법 Vue와 Excel의 암묵적 협력: 일괄 업데이트 및 데이터 가져오기를 수행하는 방법 Jul 22, 2023 pm 09:03 PM

Vue와 Excel의 암묵적 협력: 일괄 업데이트 및 데이터 가져오기를 구현하는 방법 소개: 정보 기술의 급속한 발전으로 인해 Excel 테이블은 널리 사용되는 데이터 관리 도구로서 다양한 산업 및 분야에서 널리 사용되고 있습니다. 동시에 Vue는 유연하고 효율적인 프런트엔드 개발 프레임워크로도 널리 알려져 있습니다. 이 기사에서는 Vue와 Excel의 암묵적인 협력을 통해 일괄 업데이트 및 데이터 가져오기를 수행하는 방법을 소개합니다. 독자들의 이해를 돕기 위해 코드 예제를 제공하겠습니다. 데이터 일괄 업데이트 구현: V에서

Hibernate에서 대량 삽입 업데이트 작업을 수행하는 방법은 무엇입니까? Hibernate에서 대량 삽입 업데이트 작업을 수행하는 방법은 무엇입니까? Aug 27, 2023 pm 11:17 PM

이 기사에서는 Hibernate에서 대량 삽입/업데이트를 수행하는 방법을 살펴보겠습니다. SQL 문을 실행할 때마다 데이터베이스에 대한 네트워크 호출을 통해 이를 수행합니다. 이제 데이터베이스 테이블에 10개의 항목을 삽입해야 한다면 10개의 네트워크 호출을 수행해야 합니다. 대신 일괄 처리를 사용하여 네트워크 호출을 최적화할 수 있습니다. 일괄 처리를 통해 단일 네트워크 호출에서 일련의 SQL 문을 실행할 수 있습니다. 이를 이해하고 구현하기 위해 엔터티를 정의해 보겠습니다. @EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Vue와 Excel의 효율적인 조합: 일괄 업데이트 및 데이터 가져오기를 수행하는 방법 Vue와 Excel의 효율적인 조합: 일괄 업데이트 및 데이터 가져오기를 수행하는 방법 Jul 21, 2023 pm 10:00 PM

Vue와 Excel의 효율적인 조합: 일괄 업데이트 및 데이터 가져오기를 수행하는 방법 웹 애플리케이션의 지속적인 개발과 데이터 양의 증가로 인해 데이터를 일괄적으로 업데이트하고 가져와야 하는 상황이 자주 발생합니다. 널리 사용되는 스프레드시트 도구인 Excel은 강력한 데이터 처리와 가져오기 및 내보내기 기능을 갖추고 있으며 대용량 데이터 처리를 위해 우리가 가장 먼저 선택하는 도구 중 하나가 되었습니다. 이 기사에서는 Vue와 Excel을 사용하여 일괄 업데이트 및 데이터 가져오기를 구현하여 데이터 처리 효율성을 높이는 방법을 소개합니다. 먼저, 우리는 필요합니다

Java 개발 시 데이터베이스 업데이트 성능 문제를 해결하는 방법 Java 개발 시 데이터베이스 업데이트 성능 문제를 해결하는 방법 Jun 29, 2023 pm 01:00 PM

Java 개발 시 데이터베이스 업데이트 성능 문제를 해결하는 방법 요약: 데이터 양의 증가와 비즈니스 변화로 인해 데이터베이스 업데이트 성능 문제는 Java 개발에서 주요 과제가 되었습니다. 이 문서에서는 데이터베이스 업데이트 성능 문제를 해결하는 몇 가지 일반적인 방법과 기술을 소개합니다. 키워드: Java 개발, 데이터베이스, 업데이트 성능 문제, 솔루션 소개: 대부분의 Java 애플리케이션에서 데이터베이스는 중요한 역할을 합니다. 데이터베이스 성능은 애플리케이션의 응답 속도와 안정성에 직접적인 영향을 미칩니다. 실제 개발에서는 숫자

MySQL의 일괄 업데이트 방법 MySQL의 일괄 업데이트 방법 Jun 15, 2023 pm 11:36 PM

MySQL은 많은 효과적인 데이터 조작 방법을 제공하는 널리 사용되는 관계형 데이터베이스 관리 시스템입니다. 많은 양의 데이터를 업데이트해야 하는 경우 일괄 업데이트 방식을 사용하면 효율성을 높일 수 있습니다. 이 기사에서는 MySQL의 일괄 업데이트 방법을 소개합니다. 1. 일괄 업데이트란 무엇인가요? 일괄 업데이트는 하나의 SQL 문을 통해 여러 데이터 행을 업데이트하는 것을 의미합니다. 한 번에 한 행씩 업데이트하는 방법과 비교하여 일괄 업데이트는 데이터베이스 부하와 네트워크 전송 시간을 효과적으로 줄이고 데이터 작업의 효율성과 속도를 향상시킬 수 있습니다. 2. 일괄 업데이트 구현 방법

Oracle 저장 프로시저 일괄 업데이트 구현 방법 Oracle 저장 프로시저 일괄 업데이트 구현 방법 Mar 08, 2024 pm 12:27 PM

제목: Oracle 저장 프로시저 일괄 업데이트 구현 방법 Oracle 데이터베이스에서는 저장 프로시저를 사용하여 데이터를 일괄 업데이트하는 것이 일반적인 작업입니다. 일괄 업데이트는 데이터 처리 효율성을 향상시키고, 데이터베이스에 대한 빈번한 액세스를 줄이며, 코드의 복잡성도 줄일 수 있습니다. 이 문서에서는 저장 프로시저를 사용하여 Oracle 데이터베이스에서 일괄적으로 데이터를 업데이트하는 방법을 소개하고 특정 코드 예제를 제공합니다. 먼저, 일괄적으로 데이터를 업데이트하는 기능을 구현할 저장 프로시저를 만들어야 합니다. 아래에

See all articles