Small. Fast. Reliable.
Choose any three.
*** 99,101 ****
--- 99,112 ----
  -----
  
  IIRC, as of 3.1 SQLite introduced an optimization that would result in the rows of a table consisting only of a single integer primary key column being stored entirely in the index (all SQLite tables have a "rowid" index).  That may account for the magnitude of the difference.
+ 
+ -----
+ Louis Luangkesorn wrote on 2005-12-2
+ 
+ In the interest of providing one slightly off-topic (Firebird not embedded) data point, I took a text file with 397972 records of 40 fields each, imported it into SQLite, and then used Interbase DataPump to put it into Firebird in Superserver mode (the steps and the order reflect my database skills, which are admittedly not the most sophisticated).  The schemas for both the SQLite and the Firebird database were done by hand.  The original text file was 138,358 KB, and I did a basic select query with grouping, summary, and sorting.  Timing was done by stopwatch.  Both were done on the same machine, sequentially (meaning that both were done under the exact same conditions).
+ 
+                              File Size     Query time
+ SQLite (3.2.7)            :  201,008 KB    11 s
+ Firebird (1.5 Superserver):  165,268 KB     5 s
+ 
+ For the Firebird schema, the IB DataPump reads the SQLite schema creates a Firebird schema with the text fields as memo(), which (my guess) would use more memory than varchar(n) so I redid the schema by hand using varchar(n) with appropriate values of n (since I was lazy, I set n=10 or n= 70 depending on whether the field was large or small).