Message95492
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/ |
|
Date |
User |
Action |
Args |
2009-11-19 16:56:51 | rute | set | recipients:
+ rute, skip.montanaro, rhettinger, doko, gregory.p.smith, jcea, ghaering, josiahcarlson, pitrou, erno, gregburd |
2009-11-19 16:56:51 | rute | set | messageid: <1258649811.04.0.548309632722.issue3783@psf.upfronthosting.co.za> |
2009-11-19 16:56:48 | rute | link | issue3783 messages |
2009-11-19 16:56:48 | rute | create | |
|