在Python中使用sqlite3创建索引表

4 投票
2 回答
14444 浏览
提问于 2025-04-18 06:52

我在Python 2.7中创建了一个表,用来存储唯一的名称和值的组合。在一些查询中,我会查找名称,而在另一些查询中,我会查找值。假设SELECT查询的比例是50-50。有没有办法创建一个双重索引的表(一个索引用于名称,另一个用于值),这样我的程序就能更快地查找数据?

这是数据库和表的创建代码:

import sqlite3
#-------------------------db creation ---------------------------------------#
db1 = sqlite3.connect('/my_db.db')
cursor = db1.cursor()

cursor.execute("DROP TABLE IF EXISTS my_table")

sql = '''CREATE TABLE my_table (
        name TEXT DEFAULT NULL,
        value INT
        );'''
cursor.execute(sql)

sql = ("CREATE INDEX index_my_table ON my_table (name);")
cursor.execute(sql)

或者有没有其他更快的结构可以用来更快速地查找值?

2 个回答

2

我觉得为了加快查询速度,最好的办法是给这两个字段建立一个索引。比如可以这样写:sql = ("CREATE INDEX index_my_table ON my_table (Field1, field2)")

这就是多列索引或者覆盖索引。想了解更多,可以看看这个很棒的文档:https://www.sqlite.org/queryplanner.html

9

你可以创建另一个索引...

sql = ("CREATE INDEX index_my_table2 ON my_table (value);")
cursor.execute(sql)

撰写回答