파이썬 sqlite3 속도 향상 방법

조회수 900회

CHEMBle 이라고 세계적으로 유명한 의약 화학 물질 데이터베이스 에서 데이터베이스 파일 자체를 제공해 주는 서비스가 있습니다.

여기서 sqlite3 로 된 전체 화학물질 db 파일 크기가 대충 13기가 쯤 됩니다.

이 DB파일을 대상으로 다음과 같은 코드를 실행해 주고 있습니다.

import sqlite3 as db
db_file = r"R:\chembl_22.db"

conn = db.connect(db_file)

SQL = """
SELECT DISTINCT canonical_smiles
FROM compound_structures
WHERE 
   적절한 조건들
Order by length(  canonical_smiles) 
  ;
"""

%time pandas_smiles = pd.read_sql_query(SQL, conn) # Wall time: 42.2 s
ps = pandas_smiles.copy()  # deep copy

전혀 특별할 거 없는, 일반적인 쿼리 파트인데, 너무 오래 걸립니다.

고민중입니다. 뭘 어떻게 하면 더 이 부분을 빠르게 넘길 수 있을까요?

일단 이미 db파일 자체를 램디스크(r:가 램디스크임) 에 올려놓고 실행해도 딱히 더 빨라지지는 않았습니다.

  • 저라면 mariadb 데이터베이스 하나 만들고, mariadb 로 옮겨놓고, 테이블에 인덱스 잘 걸어볼 것 같아요. nowp 2020.6.23 18:24
  • 저도 인덱스에 동감합니다 sqlite에도 있을거 같긴한데.. 효율면은 잘모르겠네요 아니면 db를 특정 칼럼기준으로 dump 하여서 분리하는것도 하나의 방법이라 생각됩니다. 김호원 2020.6.24 10:51

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)