Paul Sanderson wrote: > I underastand that ecvery coumn needs to be read, that is self evident, > however my feeling (not tested) is that the process is much slower than it > needs to be, i..e the process of creating an index on a column whos values > are all NULL takes longer than just reading all of the columns
There's also the time needed for sorting the values and constructing and writing the index. > I have to admit to not testing/timimg this though sqlite> .timer on sqlite> SELECT COUNT(*) FROM t; 4194304 CPU Time: user 0.008000 sys 0.000000 sqlite> SELECT DISTINCT x FROM t; CPU Time: user 0.608000 sys 0.012000 sqlite> CREATE INDEX i ON t(x); CPU Time: user 6.592000 sys 0.064000 sqlite> DROP INDEX i; CPU Time: user 0.080000 sys 0.004000 sqlite> UPDATE t SET x=1; CPU Time: user 4.556000 sys 0.052000 sqlite> SELECT DISTINCT x FROM t; 1 CPU Time: user 0.628000 sys 0.000000 sqlite> CREATE INDEX i ON t(x); CPU Time: user 6.648000 sys 0.080000 > That does lead to another question. Is their a method of creating multiple > indexes at the same time, e.g. create an index on each (or specified) > column in a table in one pass - rather than do each column in turn. This > would save on the overhead of reading the entire table for each column. No such commands exists. Just have enough file cache. :-) Regards, Clemens _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users