A note; I was testing this script with the lastest sqlite3.exe

sqlite3 test.db < sql.log

the selects are really fast; the inserts are REALLY slow.

My own code I use get_autocommit but never set_autocommit(if there is such
a thing)... otherwise I'm using sqlite3_open_v2; sqlite3_prepare_v2, step,
and finalize.... so pretty vanilla; would expect sqlite3 to not be much
smarter; and it performs just as badly as my own code.

On Sun, Aug 13, 2017 at 11:00 PM, J Decker <d3c...@gmail.com> wrote:

> (Sent to wrong address to start; forwarded here(?))
>
> ---------- Forwarded message ----------
> From: J Decker <d3c...@gmail.com>
> Date: Sun, Aug 13, 2017 at 10:57 PM
> Subject: How can I make this faster?
> To: General Discussion of SQLite Database <sqlite-us...@sqlite.org>
>
>
> So I have this sql script that inserts into a single table, and it is VERY
> slow.
> it is even slower without journal_mode=WAL
>
> Also,  is a unique constraint also an index?
>
> if I use this in my memory mapped VFS it is MUCH faster (but it doesn't
> supply mmap, so it's only using -journal that it creates and deletes a lot).
>
> The following is a snippet of this much longer script
> https://drive.google.com/open?id=0B812EYiKwtkkSVBUVWtpYUR4WW8
>
> it's only 1687 lines and about 50% are select statements, I would expect
> this to complete in under 1 second.not 22 seconds.
>
> (the command should also be replace into, not insert into; but given the
> constraint, I wouldn't think that will matter)
> -------
>
> #PRAGMA journal_mode=WAL;;
> select tbl_name,sql from sqlite_master where type='table' and
> name='record';
> create table `record` (`soul` char,`field` char,`value` char,`relation`
> char,`state` char,CONSTRAINT `record_unique` UNIQUE (`soul`,`field`) ON
> CONFLICT REPLACE);
> create index if not exists soul_index on record(soul);
> create index if not exists soul_field_index on record(soul,field);
> select * from Record where soul='db';
> select state from Record where soul='db' and field='hello';
> insert into Record (soul,field,value,relation,state)
> values('db','hello','"world"',NULL,1502689508373);
> select state from Record where soul='db' and field='other';
> insert into Record (soul,field,value,relation,state)
> values('db','other','"test"',NULL,1502689508408);
> select state from Record where soul='j6bqj9ec1JUbWzaheTEO' and
> field='field';
> insert into Record (soul,field,value,relation,state)
> values('j6bqj9ec1JUbWzaheTEO','field','"randomkey"',NULL,150
> 2689508436.001);
> select state from Record where soul='db' and field='j6bqj9ec1JUbWzaheTEO';
> insert into Record (soul,field,value,relation,state)
> values('db','j6bqj9ec1JUbWzaheTEO',NULL,'j6bqj9ec1JUbWzaheTE
> O',1502689508466);
> select * from Record where soul='j6bqj9ec1JUbWzaheTEO';
> select state from Record where soul='j6bqj9fz01aP8aM1rLy7R3U' and
> field='field';
> insert into Record (soul,field,value,relation,state)
> values('j6bqj9fz01aP8aM1rLy7R3U','field','"randomkey"',NULL,
> 1502689508495.002);
> select state from Record where soul='db' and field='j6bqj9fz01aP8aM1rLy7R3U
> ';
> insert into Record (soul,field,value,relation,state)
> values('db','j6bqj9fz01aP8aM1rLy7R3U',NULL,'j6bqj9fz01aP8aM1rLy7R3U',15026
> 89508528);
> select * from Record where soul='j6bqj9fz01aP8aM1rLy7R3U';
> select state from Record where soul='j6bqj9ho02jCZpwwI9kz4Vi' and
> field='field';
> insert into Record (soul,field,value,relation,state)
> values('j6bqj9ho02jCZpwwI9kz4Vi','field','"randomkey"',NULL,
> 1502689508556.003);
> select state from Record where soul='db' and field='j6bqj9ho02jCZpwwI9kz4Vi
> ';
> insert into Record (soul,field,value,relation,state)
> values('db','j6bqj9ho02jCZpwwI9kz4Vi',NULL,'j6bqj9ho02jCZpwwI9kz4Vi',15026
> 89508611);
> select * from Record where soul='j6bqj9ho02jCZpwwI9kz4Vi';
> select state from Record where soul='j6bqj9kgu96XPzRp4HfD' and
> field='field';
> insert into Record (soul,field,value,relation,state)
> values('j6bqj9kgu96XPzRp4HfD','field','"randomkey"',NULL,150
> 2689508656.001);
> select * from Record where soul='j6bqj9ec1JUbWzaheTEO';
> select * from Record where soul='j6bqj9fz01aP8aM1rLy7R3U';
> select * from Record where soul='j6bqj9ho02jCZpwwI9kz4Vi';
> select * from Record where soul='j6bqj9kgu96XPzRp4HfD';
>
> ----
>
>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to