我正在考虑让我的 SQL 查询更高效。 一个查询语句,而不是使用 for 循环并使用相同的查询和不同的值向数据库发送垃圾邮件。 看看我在这里做什么,请检查是否可以提高效率。 据我了解,映射中可以有多个具有相同值的值,但不能有多个相同的键。这就是我的困境。
Future<void> updateAllGoalsFollowingReorder(
List<Goal> newGoalTileList) async {
final db = await _getDatabase();
for (var goal in newGoalTileList) {
var response = await db.update(
_goalsTable,
{
'goalIndexForDb': goal.goalIndexForDb,
},
where: 'id = ?',
whereArgs: [goal.id]);
print(response);
}
}
我尝试创建一个目标 id 列表并将其放置在 whereArgs 中。但对于地图:
{ 'goalIndexForDb': goal.goalIndexForDb, },
我显然不能为每个值使用相同的键。有没有办法实现这个目标?
您可以使用
batch update
来完成此类工作。像这样的代码,
Future<void> updateAllGoalsFollowingReorder(List<Goal> newGoalTileList) async {
final db = await _getDatabase();
var batch = db.batch();
for (var goal in newGoalTileList) {
batch.update(
_goalsTable,
{'goalIndexForDb': goal.goalIndexForDb},
where: 'id = ?',
whereArgs: [goal.id]
);
}
var responses = await batch.commit();
print(responses);
}
参考: