> Depending on the database size, it sometimes takes minutes to get a result.
> But when using the Firefox plugin "SQLite Manager", it "only" takes 1-2
> seconds.
> ....
> I use SQLITE Version 3.6.22.

Maybe SQLite Manager uses newer version of SQLite? Try to execute in
it "SELECT sqlite_version()".


Pavel


On Mon, Apr 18, 2011 at 9:45 AM, Mathias Spoerr <math...@spoerr.org> wrote:
> Hello,
>
>
>
> I have problems with a specific query when using the "sqlite3_step"
> function:
>
>
>
>    SELECT DISTINCT interfaces_int_id,device_dev_id FROM devInterface
>
>    INNER JOIN interfaces ON
> devInterface.interfaces_int_id=interfaces.intf_id
>
>    INNER JOIN nlink ON nlink.interfaces_intf_id=interfaces.intf_id
>
>    INNER JOIN neighbor ON neighbor.neighbor_id=nlink.neighbor_neighbor_id
>
>
>
> I only posted the parts of the query which I identified to cause the
> problem.
>
>
>
> For querying the database, I use the following code:
>
> http://www.dreamincode.net/forums/topic/122300-sqlite-in-c/
>
>
>
> and when debugging it, it hangs at
>
>
>
>          while(true)
>
>          {
>
>     ---> result = sqlite3_step(statement);
>
>
>
>                if(result == SQLITE_ROW)
>
>                {
>
>                     std::vector<std::string> values;
>
>                     ...
>
>                }
>
>                ...
>
>          }
>
>
>
> Depending on the database size, it sometimes takes minutes to get a result.
> But when using the Firefox plugin "SQLite Manager", it "only" takes 1-2
> seconds.
>
> In case the query takes several minutes, the "neighbor" and "nlink" tables
> have more than 150k entries.
>
>
>
>
>
> For buliding the database I used the Forward engineer feature of the MySQL
> Workbench tool, and modified the syntax to work for sqlite3:
>
>
>
> CREATE TABLE IF NOT EXISTS device(dev_id INTEGER PRIMARY KEY AUTOINCREMENT,
> type INT, hwtype INT, dataSource INT, hostname TEXT, sw_version TEXT,
> stpBridgeID TEXT, stpProtocol TEXT);
>
>
>
> CREATE TABLE IF NOT EXISTS interfaces(intf_id INTEGER PRIMARY KEY
> AUTOINCREMENT, intfName TEXT, intfType TEXT, phl INT, macAddress TEXT,
> ipAddress TEXT, subnetMask TEXT, duplex TEXT, speed TEXT, status TEXT,
> description TEXT, l2l3 TEXT, errLvl INT, loadLvl INT, channel_intf_id INT,
> vpc_id INT, CONSTRAINT fk_interfaces_interfaces1 FOREIGN KEY
> (channel_intf_id) REFERENCES interfaces (intf_id) ON DELETE CASCADE ON
> UPDATE CASCADE);
>
>
>
> CREATE TABLE IF NOT EXISTS devInterface (interfaces_int_id INT,
> device_dev_id INT, cdp_cdp_id INT, PRIMARY KEY (interfaces_int_id,
> device_dev_id, cdp_cdp_id), CONSTRAINT fk_dev_interface_interfaces1 FOREIGN
> KEY (interfaces_int_id) REFERENCES interfaces (intf_id) ON DELETE CASCADE ON
> UPDATE CASCADE, CONSTRAINT fk_dev_interface_device1 FOREIGN KEY
> (device_dev_id) REFERENCES device (dev_id) ON DELETE CASCADE ON UPDATE
> CASCADE, CONSTRAINT fk_devInterface_cdp1 FOREIGN KEY (cdp_cdp_id) REFERENCES
> cdp (cdp_id) ON DELETE CASCADE ON UPDATE CASCADE);
>
>
>
> CREATE TABLE IF NOT EXISTS neighbor (neighbor_id INTEGER PRIMARY KEY
> AUTOINCREMENT, l2_addr TEXT NULL , l3_addr TEXT NULL);
>
>
>
> CREATE TABLE IF NOT EXISTS nlink (neighbor_neighbor_id INT,
> interfaces_intf_id INT, PRIMARY KEY (neighbor_neighbor_id,
> interfaces_intf_id), CONSTRAINT fk_table1_neighbor1  FOREIGN KEY
> (neighbor_neighbor_id ) REFERENCES neighbor (neighbor_id) ON DELETE CASCADE
> ON UPDATE CASCADE, CONSTRAINT fk_table1_interfaces1 FOREIGN KEY
> (interfaces_intf_id) REFERENCES interfaces (intf_id) ON DELETE CASCADE ON
> UPDATE CASCADE);
>
>
>
> I use SQLITE Version 3.6.22.
>
>
>
>
>
> Thanks,
>
> mspoerr
>
>
>
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to