sqlite is disk based so cpu speed doesn't have much to do with it.

try creating an index on functions.symbolid

On 1/26/06, Jim Crafton <[EMAIL PROTECTED]> wrote:
> I'm a newbie to using SQL in general, so my apologies if this has been
> answered before.
>
> I have a series of tables I'd like to create to represents the output
> that comes from parsing a bunch of source code files. Basically ctags
> output in DB format.
>
> I've created the following tables using sqlite3
>
> CREATE TABLE Types (
>        TypeID INTEGER PRIMARY KEY
>      , TypeInfo CHAR(125)
> );
>
> CREATE TABLE Templates (
>        TemplateID INTEGER PRIMARY KEY
>      , TemplateSignature CHAR(125)
> );
>
> CREATE TABLE Files (
>        FileID INTEGER PRIMARY KEY
>      , Path CHAR(255)
> );
>
> CREATE TABLE Symbols (
>        Id INTEGER PRIMARY KEY
>      , Kind INTEGER
>      , Name CHAR(125)
>      , FileID INTEGER
>      , TypeID INTEGER
>      , Offset INTEGER
>      , LineNumber INTEGER
>      , TemplateID INTEGER DEFAULT 0 NOT NULL
>      , Parent INTEGER DEFAULT 0
> );
>
> CREATE TABLE Functions (
>        FuncID INTEGER PRIMARY KEY
>      , Signature CHAR(125)
>      , SymbolID INTEGER
>      , ReturnTypeID INTEGER NOT NULL
> );
>
>
> I can then populate the tables fine. In my test, the symbols table had
> over 11,000 entries and the functions table over 7,200 entries.
>
> When I run the following query:
> "select symbols.name, functions.signature from symbols, functions
> where functions.symbolid = symbols.id;"
>
> This takes a long time (over 20 secs) on a P4 3 Ghz with 1 Gb RAM.
> Should it take this long? Is it slow because my table is setup
> incorrectly?
>
> Thanks so much!
>
> Jim Crafton
>


--
Cory Nelson
http://www.int64.org

Reply via email to