Tôi cần tăng giá trị trong cột định kỳ với dữ liệu tôi nhận được trong tệp. Bảng có> 400000 hàng. Cho đến nay, tất cả các nỗ lực của tôi dẫn đến hiệu suất rất kém. Tôi đã viết một thí nghiệm phản ánh yêu cầu của tôi:sqlalchemy vấn đề hiệu suất cập nhật số lượng lớn
#create table
engine = create_engine('sqlite:///bulk_update.db', echo=False)
metadata = MetaData()
sometable = Table('sometable', metadata,
Column('id', Integer, Sequence('sometable_id_seq'), primary_key=True),
Column('column1', Integer),
Column('column2', Integer),
)
sometable.create(engine, checkfirst=True)
#initial population
conn = engine.connect()
nr_of_rows = 50000
insert_data = [ { 'column1': i, 'column2' : 0 } for i in range(1, nr_of_rows)]
result = conn.execute(sometable.insert(), insert_data)
#update
update_data = [ {'col1' : i, '_increment': randint(1, 500)} for i in range(1, nr_of_rows)]
print "nr_of_rows", nr_of_rows
print "start time : " + str(datetime.time(datetime.now()))
stmt = sometable.update().\
where(sometable.c.column1 == bindparam('col1')).\
values({sometable.c.column2 : sometable.c.column2 + bindparam('_increment')})
conn.execute(stmt, update_data)
print "end time : " + str(datetime.time(datetime.now()))
thời gian tôi nhận được sau đây:
nr_of_rows 10000
start time : 10:29:01.753938
end time : 10:29:16.247651
nr_of_rows 50000
start time : 10:30:35.236852
end time : 10:36:39.070423
làm như vậy một 400000+ số lượng hàng sẽ mất nhiều quá lâu.
Tôi mới đến sqlalchemy, nhưng tôi đã làm rất nhiều đọc tài liệu, và tôi chỉ không thể hiểu những gì tôi đang làm sai.
cảm ơn trước!
tuyệt vời, cảm ơn! Tôi đã nghe nói về lập chỉ mục, nhưng tôi nghĩ nó chỉ đi vào hoạt động với khối lượng lớn hơn nhiều. Tất cả rõ ràng bây giờ, chúc mừng! – devboell