Agreed Keith (and Simon in a later post), thanks for posting and this is all well and good, but the original question which I am still not 100% sure of, although what you said "seems to suggest", is this: Does SQLite specifically have an optimization that do not actually write rows that did not change during an update statement, YES or NO? Does it depend on the VFS or not? i.e. does it repaint Green cars to Green, or doesn't it, or does it not know? (regardless of what it reports back) Put another way, and what we really want to know: Is it helpful for the OP to add code to his queries to avoid updating rows that already contain the correct values, or will SQLite already avoid rewriting those internally? (in which case he is wasting effort and cpu cycles for no effect). What it returns in the "changes()" value is a separate thought, perhaps needing better documentation as noted before, but of no consequence in answering this question.