gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:27 24 4
gpt4 key购买 nike

什么会更快;在 sqlite3 数据库表中搜索主键等于特定字符串的行

在 Python 中,我从 sqlite3 数据库表(使用查询)中获取所有主键作为 Python 列表,并使用 Python 的 in 关键字来测试特定字符串是否出现在该列表中。

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

最佳答案

每个“它会更快吗?”的答案问题是“自己测试”。

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

至于你的“告诉 SQLite 如何存储行”位,你不想要那个。您可以执行 ORDER BY 以按特定顺序检索结果 - 它们存储的方式是一个实现细节。

关于python - 在 SQLite3 表中搜索特定行还是使用 Python 更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com