FOXPRO test - plain old VFP9 - RAM usage: 60 Mb in all cases data is fed into VFP arrays build in memory structure 0,0200 load 100K text file 0,5200 build btree 0,1100 select count(*) from big_data 10x avg: 0,0400 select count(*) from big_data filtered on text 10x avg: 0,0500 select * from big_data 10x avg: 0,3100 select single numeric from big_data 10x avg: 0,0900 select single numeric from big_data ordered 10x avg: 0,1600 select top 10,000 * from big_data order by numeric no-index 10x avg: 0,4200 select text_field,count(*) as cnt from big_data group by text_field order by 2 desc 10x avg: 1,4500 select text and numeric from big_data avg: 0,1200 select two numerical fields from big_data 10x avg: 0,1000 select numeric field from bigdata arbitrary textfield selection 10x avg:0,1062 100-K short SQL index-filtered calls avg:11,8300 SQLITE TEST - python 3.8 sqlite3 - RAM usage: dynamically moving 20 and 100 Mb database is diskbased - since loading from scratch might be time-consuming data is fed into default python structures select count(*) 10x avg:0.0156 sec. select count(*) arbitrary textfield selection 10x avg:0.0484 sec. select * from big_data in basic python 10x avg:0.8562 sec. select single numeric from big_data in numpy array 10x avg:0.1578 sec. select function from big_data 10x avg:0.1812 sec. select text and numeric from big_data 10x avg:0.2109 sec. select two numerical fields from big_data 10x avg:0.1969 sec. select top 10,000 * from big_data order by numeric no-index avg:0.2281 sec. select text_field,count(*) as cnt from big_data group by text_field order by 2 desc 0.1094 sec. select numeric_field from big_data arbitrary textfield selection 0.1406 sec. 100-K short SQL index-filtered calls avg: time:27.0928 sec. DUCKDB TEST -python 3.8 duckdb alpha version - RAM usage: 600 Mb / more when not constrained by OS data is fed into python structures or optimized numpy arrays and pandas dataframes build in memory structure 0.0000 load 100k lines 10 MB csv - 1x: 0.5937345027923584 sec. build btree 0.0781 select count(*) 10x avg:0.0000 sec. select count(*) arbitrary textfield selection 10x avg:0.0031 sec. select * from big_data in basic python 10x avg:0.4745 sec. select * from big_data in numpy array 10x avg:0.1125 sec. select * from big_data into pandas frame 10x avg:0.1531 sec. select single numeric from big_data in numpy array 10x avg:0.0031 sec. select single numeric from big_data ordered in numpy array 10x avg:0.0812 sec. select function from big_data in numpy array 10x avg:0.0219 sec. select text and numeric from big_data in numpy array 10x avg:0.0250 sec. select two numerical fields from big_data in numpy array 10x avg:0.0047 sec. select top 10,000 * from big_data order by numeric no-index in numpy array avg:0.0922 sec. select top 10,000 * from big_data order by numeric no-index in pandas frame avg:0.1000 sec. select text_field,count(*) as cnt from big_data group by text_field order by 2 desc in numpy array 0.0156 sec. select text_field,count(*) as cnt from big_data group by text_field order by 2 desc in pandas frame 0.0156 sec. select numeric_field from big_data arbitrary textfield selection 0.0469 sec. 100-K short SQL index-filtered calls avg: time:33.2645 sec.