在Python中使用sqlite3创建索引表
我在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)