No, the DLL wasn't the issue (heck the entire program is a DLL anyway and that's worked well for ages)
We eventually discoverd through profiling the Delphi componants we had started using were the slow point, tossed them, and tried someone elses version (some stuff adapted by someone called Tim A.) and they work MUCH better It seems the chokepoints where in the wrapper code itself, perhaps in the mechanisms calling the various SQLite functions. I'd dig deeper but frankly the wrapper we have now lets me get to the bare bones easier. I am pleasently surprised about SQLites power now, for a large single user DB it works nicely. Sure, when we tossed a further 8 million rows into the DB it is slows down, but still ~1 secondish for a 3k select statement Still trying to wrench every piece of speed I can from the DB, and some functions don't seem to be working? (or I am misunderstanding them) For example: CREATE UNIQUE INDEX pk ON myTable (Field1, Field2) ON CONFLICT REPLACE; runs but doesn't create the ON CONFLICT part. When you examine the schema you see : CREATE UNIQUE INDEX pk ON myTable (Field1, Field2); Also any INSERT statement evaluate as if the default is still FAIL Still not really required, INSERT OR REPLACE works well. Was hoping setting the default CONFLICT handeler may speed things up a bit > I wouldn't think DLL calling overhead would be significant > when dealing with things as slow (relatively) as a database. > > Is it really necessary for it to be a DLL? > You might be able to statically link it and remove that overhead. > Are you using COM or ActiveX to call it? If I remember right > they had a lot more overhead than a vanilla DLL. > > Sounds like a job for the profiler!