SQL中的空间导致100倍的性能差距,为什么?
问题描述:
我正在尝试使用pymysql.executemany
来进行多插入。SQL中的空间导致100倍的性能差距,为什么?
但是在sql中的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
以前发布过类似的问题。请参阅此主题:[链接](https://stackoverflow.com/questions/1017239/how-do-null-values-affect-performance-in-a-database-search) – 2017-09-27 03:31:52
我认为这不是同一个问题。我很困惑sql的语法,而不是数据的价值。 – panda0