我的表有以下字段:
- 日期(整数)
- 状态(整数)
- 产品 ID(整数)
- 产品名称(整数)
- 说明(文字)(文字最长 3000 个字符)
将有超过 800 万行。我需要决定是否应该将产品描述放在另一个表中。我的主要目标是让这个声明非常快:
SELECT Date,State,ProductId,ProductName FROM tablename ORDER BY DATE desc LIMIT 100
SQL 结果将不会获取上述语句中的 Description 字段值。只有在应用程序中选择了行(新查询)时,用户才会看到描述。
我真的很想在同一个表中有产品描述,但我不确定 SQLite 如何扫描行。如果日期值不匹配,我会假设 SQLite 可以快速跳到下一行。或者它可能需要扫描行的所有字段,直到它到达描述字段值的末尾才能知道该行已经结束?如果需要扫描所有字段才能到达下一行,Description 字段中 3000 个字符的值会大大降低速度吗?
编辑:不应使用索引,因为插入速度很重要。
编辑:尝试将所有内容都放在一个表中的唯一原因是我想在一个包含数百个项目的事务中执行 INSERT 和 UPDATE。可以在同一个事务中插入同一个项目并稍后更新,所以我不知道每个项目的最后一个插入 ID。