You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中判断整数末两位及更新主键的更优方法咨询

SQLite更新主键末两位的方案验证与优化

你的现有方法是否正确?

你的字符串处理方法是完全正确的。从测试结果能看到,通过substring(format('%s', indexRow),-2)='55'精准筛选出了indexRow末两位为55的记录,结合added=55的条件后,目标记录全部命中;计算indexRow-5也恰好得到了末两位为50的目标值,逻辑没有问题。

更优方案:用数学运算替代字符串处理

虽然字符串方法简便,但整数取模运算的效率更高,尤其在数据量较大时,能减少字符串转换带来的额外开销,逻辑也更直接:

  • 判断末两位为55:用取模运算 indexRow % 100 = 55(整数对100取模的结果就是末两位的数值)
  • 更新末两位为50:直接执行 indexRow - 5(55减5等于50,不会影响高位数值)

对应的测试查询语句

SELECT indexRow, indexRow - 5, indexRow % 100
FROM newSL
WHERE added = 55
  AND indexRow % 100 = 55
LIMIT 10;

事务内的更新操作(推荐)

BEGIN TRANSACTION;

-- 执行更新
UPDATE newSL
SET indexRow = indexRow - 5
WHERE added = 55
  AND indexRow % 100 = 55;

-- 验证更新条数或抽查结果
SELECT COUNT(*) AS updated_count FROM newSL WHERE added=55 AND indexRow%100=50;

-- 确认无误后提交,否则执行 ROLLBACK;
COMMIT;

两种方案对比

  • 字符串方法:写法直观,适合快速验证,但性能略逊于数学运算
  • 数学运算方法:性能更优,逻辑严谨,适合正式的批量更新操作

内容的提问来源于stack exchange,提问作者Gary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:35:17