Я изо всех сил пытаюсь найти быстрый способ получить набор значений (текст) в столбце в sqlite.В моей текущей базе данных около 600 строк, поэтому я предполагаю, что объем данных не должен быть серьезной проблемой.С другой стороны, я заметил, что получение запроса занимает значительно больше времени, если значения длиннее.
До сих пор я пробовал эти два варианта:
def get_column_values(self, col, table, option):
if option == 1:
pos_values = self.cur.execute('SELECT {} FROM {}'.format(col, table)).fetchall()
pos_values = list(set([str(x[0]) for x in pos_values]))
elif option == 2:
df = pd.read_sql('SELECT {} FROM {}'.format(col, table), self.conn)
pos_values = list(set(df[col].values.tolist()))
return pos_values
Хотяопция pd.read_sql работает быстрее, но получение набора может занять несколько секунд.
Я также пытался создать индексы перед запросом, что ускоряет выполнение запроса.Но время, затрачиваемое на создание индексов, делает параметр все еще медленнее, чем параметр pd.read_sql.
Не могли бы вы порекомендовать мне лучший или более быстрый способ достижения этого?Может быть проблема в том, как создается база данных?