1
yuewolf OP 检查了一遍,貌似描述不算乱,态度语气也没问题,怎么大神都不留个只言片语呢? 555555
|
2
Daniel65536 2015-12-15 17:45:23 +08:00 via iPad
@yuewolf 因为才过了 40 分钟
|
3
SparkMan 2015-12-15 17:47:28 +08:00
300 条记录更改,用时 6-10 秒 这个耗时肯定不正常
|
4
tmkook 2015-12-15 17:48:14 +08:00
数据库记录有多少?是否加索引?
|
5
sivacohan 2015-12-15 17:49:00 +08:00 via Android 1
1 ,数据库用 SQLite 的话是比较慢的。官网有说明,它的目标是替换 fseek 。如果想快的话,可以考虑 SSD 或者直接扔内存里。
2 ,可以考虑把 300 个 update 合并为 3 个。即按照 3 个 status 分类, where 后使用 in ( id1 , id2...)可能会有一定速度提升。 |
6
sivacohan 2015-12-15 17:51:00 +08:00 via Android 1
另外检查一下 SQLite 版本,看看这个版本 transcation 实现的情况。我记得 SQLite 实现的是不完整的。
|
7
yuewolf OP @tmkook 数据库记录有 50 多万条,没有加索引,只有 id(不是自增的)和 status (值就是 0 、 1 、 2 、 3 )俩字段。
|
8
tmkook 2015-12-15 17:55:16 +08:00 1
|
9
yuewolf OP @sivacohan 用 where in 是我最初的考虑。后来发现用 Transaction 后挨个 insert 五百条上千条速度飞快,就去掉了那种合并的形式,结果 update 却慢了许多。
SQLite 是 3 ,很有可能是不完整,我再查一遍,感谢指点。 |
10
yuewolf OP @tmkook 因为没有索引,所以 update 时候做条件判断变慢了对吗?而 insert 是没有影响的。我觉得这个应该就是问题所在。
|
11
solupro 2015-12-15 17:59:40 +08:00
REPLACE INTO ?!
|