1

我有一个数据库表,其中每一行(电影)都有几个数字标签(电影类别)。目前我将所有这些标签作为字符串放在同一列中,并使用 %LIKE% 搜索它们,当我需要查找某个类别中的所有电影时,这需要缓慢的全表扫描。

我想加快搜索这些标签的速度,但我能想到的唯一解决方案是创建第二个包含两个整数列的表。第一个包含单个类别,第二个包含电影的 rowid。

但是,这将需要在数据库中进行更多的插入。一行平均有 10 个标签,所以我必须插入 11 行,而不是插入单行。由于我的应用程序执行的插入操作比实际查询多得多,因此插入性能至关重要。

在不牺牲插入性能的情况下,还有其他方法可以解决这个问题吗?或者插入 1 行 10 列 VS 10 行 2 列之间没有太大区别吗?

4

1 回答 1

1

您的插入性能会稍慢一些,因为需要更新索引(至少它会有一个关于 ROWID 的索引,并且您需要一个关于类别 ID 的索引来获得显着的加速)。数据大小本身是微不足道的。

但是,我希望它与事务开销相比完全相形见绌(所有对fsync(), 的调用)。SQLite 对于并发写入繁重的负载非常糟糕。

如果您执行的插入操作多于查询操作,您可能需要重新考虑您的数据结构。

于 2011-10-08T02:43:53.297 回答