在SQLite3表中搜索特定行,还是使用Python更快

2024-10-01 13:28:39 发布

您现在位置:Python中文网/ 问答频道 /正文

什么更快呢?在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我希望以什么顺序存储行?所以我总是可以让表中的行按字母顺序(根据主键)排序?


Tags: 字符串from数据库target列表executereturnselect
1条回答
网友
1楼 · 发布于 2024-10-01 13:28:39

每一句“会不会更快?”问题是“自己测试一下”。在

也就是说,答案是SQLite在索引上的搜索速度将比SQLite表扫描加上Python中的O(N)扫描快。在

至于“告诉SQLite如何存储行”这一点,您不希望这样。你可以做一个ORDER BY来按一定的顺序检索结果——它们的存储方式是一个实现细节。在

相关问题 更多 >