SQLite & Python - Самый быстрый способ получить все значения в столбце? - PullRequest
0 голосов
/ 21 февраля 2019

Я изо всех сил пытаюсь найти быстрый способ получить набор значений (текст) в столбце в 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.

Не могли бы вы порекомендовать мне лучший или более быстрый способ достижения этого?Может быть проблема в том, как создается база данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...