이번주에 진행했던 성능개선 내용을 이용해서 다른 부분들도 개선할 수 있는지 찾아봤고 비중이 크진 않지만 경우에 따라 의미있을 부분들을 수정해보았다.
기존
삭제할 데이터 오브젝트를 for문 안에서 get()으로 불러옴
for deleted_data_no in deleted_data_no_list: deleted_data_obj = cur_data_obj_set.get(data_no=deleted_data_no) deleted_data_obj.delete()
개선
for문 밖에서 filter()로 한번에 불러옴
deleted_data_objs = Data.objects.filter(data_no__in=deleted_data_no_list) for deleted_data_obj in deleted_data_objs: deleted_data_obj.delete()
또는 filter() 쿼리를 한번에 삭제
deleted_data_objs = Data.objects.filter(data_no__in=deleted_data_no_list) deleted_data_objs.delete()
기존
for문안에서 create()로 생성
for added_data_no in added_data_no_list: added_data_obj = Data.objects.create(data_no=added_data_no)
개선
for문 밖에서 bulk_create()로 한번에 생성
added_data_objs = [] for added_data_no in added_data_no_list: added_data_obj = Data(data_no=added_data_no) added_data_objs.append(added_data_obj) added_data_objs = Data.objects.bulk_create(added_data_objs)
데이터 추가/삭제가 큰 비중을 둔 부분은 아니었기 때문에 해당 개선한 내용 그렇게 큰 변화를 주진 못할 것이라 생각이 들고 성능측정도 무의미하다고 여겨진다. 하지만 그동안 DB관련한 내용을 개선하는 과정을 거치면서 ChatGPT와 같은 외부 영향없이 순전히 내 스스로 개선점을 찾고 해결해나갔다는 것에 의미가 있는 것 같다. 앞으로도 DB관련된 내용과 외부API 관련된 코드 부분은 주의깊게 보고 더 효율적으로 작성할 수 있도록 해야할 것이다.