Protocol
Every number on this site comes from bench/sqbench.py on one machine. Anything that did not reproduce is not published.
Method
- Every case uses a fixed data size, tuned so one sample lands between 1 ms and 2 s
- Each run takes 9 samples and reports the median (never the mean)
- Each case runs three separate times; we compute the CV of the medians
- Nothing is published if the ratio CV is above 10% or the gap is under 5%
- Write cases rebuild the database for every sample, so no state carries over
What we do not measure
- Other engines (PostgreSQL, MySQL)
- Memory use, or how disk I/O splits between them
- Concurrency — every measurement is one process, one connection
- Rankings at a different number of rows
Cases we did not publish
- fetchall-vs-iterate — 差 4.2% < 5%
- update-index-vs-scan — 差 0.0% < 5%
Environment
Python 3.12.14 / SQLite 3.53.1 / Windows-11-10.0.26300-SP0 / 12 cores / 100,000 rows / seed 20261111