Ok, so just to be sure we are 100% on the same page: Your claim is that SQLite, while reading the whole record, only checks the fields which appear in the WHERE clause. This would mean that, given a table t(a,b) with row values (1,5),(2,6) and (3,7), the statement: UPDATE t SET b = 5 WHERE a = 1; only checks field a for comparing it to 1, and because that is true for one row, it would cause a physical WRITE operation, no matter the fact the value of b is already 5?