>  기사  >  데이터 베이스  >  MySQL 데이터베이스에 많은 수의 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

MySQL 데이터베이스에 많은 수의 행을 효율적으로 삽입하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-24 02:28:09956검색

How Can I Efficiently Insert Large Numbers of Rows into a MySQL Database?

MySQL 데이터베이스의 효율적인 행 삽입

MySQL 데이터베이스에 많은 수의 행을 삽입하는 것은 시간이 많이 걸리는 작업일 수 있습니다. 특히 다음을 사용하는 경우에는 더욱 그렇습니다. 단일 행 삽입과 같은 전통적인 방법. 성능을 향상하려면 보다 효율적인 기술을 사용하는 것이 좋습니다.

단일 행 삽입과 대량 삽입

일반적으로 단일 행 삽입은 개별 레코드를 한 번에 하나씩 삽입하는 데 사용됩니다. 시간. 이 접근 방식은 간단하지만 대규모 데이터 세트를 처리할 때는 비효율적일 수 있습니다. 대신, 여러 행을 동시에 삽입하려면 대량 삽입을 사용하는 것이 좋습니다. 여러 행 값을 단일 INSERT 문으로 연결하면 상당한 시간을 절약할 수 있습니다.

코드 구현

다음 코드는 크게 개선할 수 있는 대량 삽입 접근 방식을 보여줍니다. 삽입 속도:

public static void BulkToMySQL()
{
    string ConnectionString = "server=192.168.1xxx";
    StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES ");
    using (MySqlConnection mConnection = new MySqlConnection(ConnectionString))
    {
        List<string> Rows = new List<string>();
        for (int i = 0; i < 100000; i++)
        {
            Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test")));
        }
        sCommand.Append(string.Join(",", Rows));
        sCommand.Append(";");
        mConnection.Open();
        using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection))
        {
            myCmd.CommandType = CommandType.Text;
            myCmd.ExecuteNonQuery();
        }
    }
}

이 코드는 삽입할 행을 반복하고 다음과 같이 대량 INSERT 문을 구성합니다. 개별 행 값을 연결합니다. 결과 문은 모든 행을 동시에 삽입하여 상당한 성능 향상을 가져옵니다.

보안을 위한 입력 데이터 이스케이프

대량 삽입은 잠재적인 보안 취약점을 노출할 수 있다는 점에 유의하는 것이 중요합니다. SQL 주입을 방지하려면 INSERT 문에 사용자 입력을 포함하기 전에 사용자 입력을 이스케이프 처리하는 것이 중요합니다. 위 코드에서 볼 수 있듯이 MySqlHelper.EscapeString을 이러한 목적으로 사용할 수 있습니다.

위 내용은 MySQL 데이터베이스에 많은 수의 행을 효율적으로 삽입하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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