我有一个SQLite数据库。数据库有两个表格:键和元素。
CREATE TABLE keys (id INTEGER PRIMARY KEY, key TEXT)
CREATE TABLE elements (key_id INTEGER, element TEXT)
实施例的键:
- (1,一些关键的)
- (2,其他键)
实施例的元素:
- (1,弗里斯特字)
- (1,第二个字)
- (1,第三字)
- (2,第一个字)
- (2,第二个字)
算:
- 键:2.600.000
- 元素:3.800.000
我生成数据库,基于此的文字:
cursor.execute("""
SELECT id
FROM keys
WHERE key = ?
""", (key,))
key_id = cursor.fetchone()[0]
cursor.execute("""
SELECT element
FROM elements
WHERE key_id = ?
""", (key_id,))
elements = cursor.fetchall()
word = "".join(random.choice(elements))
该代码被执行10-20次。但它太慢了。一代可能需要20-30秒。
问题:
- 为了加快一代如何组织数据库?
- 什么是存储元素的最佳方式?在自己的行中的每个元素与key_id和值?或者一行key_id和value包含所有元素?
我发现数据库设计仅仅是人类:关于数据库设计的实践指南是一个很好的资源。 – WombatPM