> For example if my LIMIT was 100 I would expect 100 rows_read without the order, That's not correct

For example if my LIMIT was 100 I would expect 100 rows_read without the order,
That's not correct. SQLite has to read rows of its indexes as well to figure out which rows you want. It's very rare that your LIMIT will be the total number of rows the actual SQLite query will process. Keep in mind, indexes do count as rows read/written themselves too.

In order to optimize your queries, run it once with the prefix EXPLAIN and see what SQLite tells you will do, you can do this in the D1 Console UI too. This is the most reliable way to see what index you are missing.
Was this page helpful?