Поиск таблицы SQLite3 для конкретной строки ИЛИ быстрее ли использовать Python - PullRequest
0 голосов
/ 26 января 2012

Что было бы быстрее;поиск в таблице базы данных sqlite3 строки, первичный ключ которой равен определенной строке

ИЛИ

В Python я получаю все первичные ключи из таблицы базы данных sqlite3 (используязапрос) в качестве списка Python и используйте ключевое слово Pythons в , чтобы проверить, встречается ли конкретная строка в этом списке.

Я предполагаю, что спрашиваю, использует ли SQLite3 более продвинутый алгоритмнайти конкретную строку с первичным ключом, который я ищу, или было бы быстрее просто получить все первичные ключи самостоятельно и выполнить поиск с помощью python (или использовать мой собственный двоичный поиск, как только я получу их все)?

Код для выполнения в любом случае:

import sqlite3
conn = sqlite3.connect("d.db")
cur = conn.cursor()
isPresent = cur.execute( "SELECT target FROM stringList WHERE target='specificString';" ).fetchall()
return isPresent == None

// Alternate
primaryKeyList = cur.execute( "SELECT target FROM stringList;" ).fetchall()
return 'specificString' in primaryKeyList 

// Or I can sort the list then use a binary search or other fast algorithm
primaryKeyList = cur.execute( "SELECT target FROM stringList;" ).fetchall()
//..sort primaryKeyList
primaryKeyList = sortList(primaryKeyList)
return binarySearch('specificString') == True 

PS: Есть ли способ указать SQLite3, в каком порядке я хочу, чтобы строки были сохранены?Поэтому я всегда могу отсортировать строки в таблице в алфавитном порядке (по первичному ключу)?

1 Ответ

3 голосов
/ 26 января 2012

Ответ на каждое "это будет быстрее?" вопрос "проверь сам".

Тем не менее, ответ заключается в том, что поиск SQLite по индексу будет быстрее, чем сканирование таблиц SQLite плюс сканирование O (N) в Python.

Что касается вашего бита "скажите SQLite, как хранить строки", вы этого не хотите. Вы можете сделать ORDER BY для получения результатов в определенном порядке - способ, которым они хранятся , является подробностью реализации.

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