2017-09-27 1 views
2

멀티 삽입에 pymysql.executemany을 사용하려고합니다.SQL에서 공백으로 인해 성능 차이가 100 배가되는 이유는 무엇입니까?

그러나 VALUES 이후의 공간이 적을수록 실행 시간이 길어집니다. 왜 그런가요?

여기 내 코드는 run 기능을 확인하십시오.

import pymysql.cursors 

from functools import wraps 
from datetime import datetime 


def running_time(func): 
    @wraps(func) 
    def deco(): 
     t0 = datetime.now() 
     res = func() 
     t1 = datetime.now() 
     print(t1 - t0) 
     return res 
    return deco 


CONFIG = { 
    'host': 'localhost', 
    'port': 3306, 
    'user': 'root', 
    'password': '', 
    'db': 'test', 
    'charset': 'utf8', 
    'cursorclass': pymysql.cursors.DictCursor, 
    'autocommit': True, 
} 
connection = pymysql.connect(**CONFIG) 
cur = connection.cursor() 


@running_time 
def run(): 
    sql = """INSERT INTO table_name(c) VALUES (%s)""" 
    for i in range(100): 
     param = ['1'] * 2000 
     cur.executemany(sql, param) 
run() 


@running_time 
def run(): 
    sql = """INSERT INTO table_name(c) VALUES(%s)""" 
    for i in range(100): 
     param = ['1'] * 2000 
     cur.executemany(sql, param) 
run() 

출력 :

0 : 00 : 02.765183

0 : 01 : 13.729428

+0

. 이 주제를 참조하십시오 : [link] (https://stackoverflow.com/questions/1017239/how-do-null-values-affect-performance-in-a-database-search) –

+0

나는 이것이 같은 문제가 아니라고 생각합니다. . 데이터의 값이 아닌 SQL의 구문을 혼동합니다. – panda0

답변

관련 문제