Runar Tenfjord <runar.tenfj...@gmail.com> added the comment:

By utilizing triggers on inserts and deletes it is possible to
keep track of the size and speed up __len__ by 10 x.

SQL:

CREATE TABLE IF NOT EXISTS info
   (key TEXT UNIQUE NOT NULL,
    value INTEGER NOT NULL);

INSERT OR IGNORE INTO info (key,value) VALUES ('size',0);

CREATE TABLE IF NOT EXISTS shelf
    (key TEXT UNIQUE NOT NULL,
     value TEXT NOT NULL);

CREATE TRIGGER IF NOT EXISTS insert_shelf
    AFTER INSERT ON shelf
    BEGIN
         UPDATE info SET value = value + 1 WHERE key = 'size';
    END;

CREATE TRIGGER IF NOT EXISTS delete_shelf
    AFTER DELETE ON shelf
    BEGIN
         UPDATE info SET value = value - 1 WHERE key = 'size';
    END;

On my laptop this increase the speed of 'len' about 10x

I have a slightly modified version of dbsqlite.py for
running on python 2.5 utilizing the triggers for 
keep track of the size:

http://dpaste.com/hold/122439/

----------
nosy: +rute

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue3783>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to