200GB Sqlite数据库文件搜索和检索

时间:2018-07-10 16:46:02

标签: python sql database sqlite

我在SSD驱动器上有一个250GB的sqlite数据库文件,需要搜索该文件并在表中搜索特定值。

我写了一个脚本在python中执行查找,这是与我写的脚本类似的sql语句:

SELECT table FROM database WHERE table like X'003485FAd480'. 

我希望将存储在表中的十六进制值与给定的十六进制值之间进行比较。我使用的是Anaconda命令提示符,不确定是否是最佳途径。

我的问题是有关可能有助于加快查找速度的建议或工具?

谢谢!

2 个答案:

答案 0 :(得分:2)

LIKE将两个操作数都转换为字符串,因此,如果一个值包含零字节或在UTF-8编码中无效的字节,则它可能无法正常工作。

要比较是否相等,请使用=

SELECT ... FROM MyTable WHERE MyColumn = x'003485FAD480';

可以使用查找列上的索引加快搜索速度;如果此列上还没有主键或唯一约束,则可以手动创建索引:

CREATE INDEX MyLittleIndex ON MyTable(MyColumn);

答案 1 :(得分:-1)

我不知道这是否是您要寻找的,您提到使用Python。如果您要搜索Python中不同的值,您是否考虑过编写两个函数,一个用于搜索数据库,一个用于比较这些结果并对它们执行某些操作?

def queryFuntion():
    cnxn = pyodbc.connect('DRIVER={SQLite3 ODBC Driver};SERVER=localhost;DATABASE=test.db;Trusted_connection=yes') #for production use only
    cursor = cnxn.cursor()
    query = cursor.execute("SELECT table FROM database")
    for row in cursor.fetchall():
        yield str(row.table)

def compareFunction(row):
    search = '003485FAd480'
    if row == search:
        print('Yes')
    else:
        print('No')