[sqlite] Computed column or create index on a view ?

2016-05-15 Thread Jean-Luc Hainaut

- No index on a view in SQLite (so far).

- A computed column can be maintained through appropriate triggers (here, "on 
insert" and "on update"). Efficient if you read data more than you modify them.

- Perhaps trying this: 
create table readings(...);
create index trg_cx on readings(timestamp,(20+(a+b)/(c+c)));

J-L Hainaut


>I know that SQLite does not currently implement these things but I'm curious 
>if anyone else wants them and how hard they would be to implement.
>
>I have what you might consider to be a computed column.  You might imagine
>
>CREATE TABLE readings
>(timestamp TEXT PRIMARY KEY,
>a REAL, b REAL, c REAL)
>
>and I constantly need to evaluate
>
>pressure = 20+(a+b)/(c+c)
>
>What I really want from SQLite is to support computed columns.  I don't really 
>care which syntax is used but perhaps
>
>CREATE TABLE readings
>(timestamp TEXT PRIMARY KEY,
>a REAL, b REAL, c REAL,
>(20+(a+b)/(c+c)) AS pressure)
>
>... or perhaps ...
>
>CREATE TABLE readings
>(timestamp TEXT PRIMARY KEY,
>a REAL, b REAL, c REAL,
>pressure = (20+(a+b)/(c+c)))
>
>One can then, of course, do
>
>CREATE INDEX r_tp ON readings (timestamp,pressure DESC)
>
>That's my ideal.  Second choice would be to be able to create an index on a 
>VIEW:
>
>CREATE TABLE readings
>(timestamp TEXT PRIMARY KEY,
>a REAL, b REAL, c REAL);
>CREATE VIEW r_t_p (timestamp,pressure)
>AS SELECT timestamp,(20+(a+b)/(c+c)) FROM readings;
>CREATE INDEX r_tp ON VIEW r_t_p (timestamp, pressure DESC)
>
>At the moment I have to simulate the above abilities by creating both the VIEW 
>and an index with a calculated column independently, and even after that I 
>have to do two fetches to get the row of data I need.
>
>Surely I'm not alone in thinking that since SQLite now implements expressions 
>in indexes computed columns are a natural addition to SQLite at this time ?
>
>Simon.
>___
>sqlite-users mailing list
>sqlite-users at mailinglists.sqlite.org
>http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users 



[sqlite] Computed column or create index on a view ?

2016-05-15 Thread Simon Slavin

On 15 May 2016, at 4:08pm, Jean-Luc Hainaut  
wrote:

> - A computed column can be maintained through appropriate triggers (here, "on 
> insert" and "on update"). Efficient if you read data more than you modify 
> them.

Hmm.  Yes, you're right.  Your way of simulating it is better than my way of 
simulating it.  It just needs triggers on INSERT and UPDATE, and I can create 
an index on the table itself and I don't need a view.  That's neat.  Thanks.

Simon.


[sqlite] Computed column or create index on a view ?

2016-05-15 Thread Simon Slavin
I know that SQLite does not currently implement these things but I'm curious if 
anyone else wants them and how hard they would be to implement.

I have what you might consider to be a computed column.  You might imagine

CREATE TABLE readings
(timestamp TEXT PRIMARY KEY,
a REAL, b REAL, c REAL)

and I constantly need to evaluate

pressure = 20+(a+b)/(c+c)

What I really want from SQLite is to support computed columns.  I don't really 
care which syntax is used but perhaps

CREATE TABLE readings
(timestamp TEXT PRIMARY KEY,
a REAL, b REAL, c REAL,
(20+(a+b)/(c+c)) AS pressure)

... or perhaps ...

CREATE TABLE readings
(timestamp TEXT PRIMARY KEY,
a REAL, b REAL, c REAL,
pressure = (20+(a+b)/(c+c)))

One can then, of course, do

CREATE INDEX r_tp ON readings (timestamp,pressure DESC)

That's my ideal.  Second choice would be to be able to create an index on a 
VIEW:

CREATE TABLE readings
(timestamp TEXT PRIMARY KEY,
a REAL, b REAL, c REAL);
CREATE VIEW r_t_p (timestamp,pressure)
AS SELECT timestamp,(20+(a+b)/(c+c)) FROM readings;
CREATE INDEX r_tp ON VIEW r_t_p (timestamp, pressure DESC)

At the moment I have to simulate the above abilities by creating both the VIEW 
and an index with a calculated column independently, and even after that I have 
to do two fetches to get the row of data I need.

Surely I'm not alone in thinking that since SQLite now implements expressions 
in indexes computed columns are a natural addition to SQLite at this time ?

Simon.