什么更快呢?在sqlite3数据库表中搜索主键等于特定字符串的行
或
在Python中,我从sqlite3数据库表(使用查询)中获取所有主键作为Python列表,并使用PythonsIn关键字来测试特定字符串是否出现在该列表中。在
我用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我希望以什么顺序存储行?所以我总是可以让表中的行按字母顺序(根据主键)排序?
每一句“会不会更快?”问题是“自己测试一下”。在
也就是说,答案是SQLite在索引上的搜索速度将比SQLite表扫描加上Python中的O(N)扫描快。在
至于“告诉SQLite如何存储行”这一点,您不希望这样。你可以做一个
ORDER BY
来按一定的顺序检索结果——它们的存储方式是一个实现细节。在相关问题 更多 >
编程相关推荐