Hello,

on the table :

CREATE TABLE HASH(
   ID INTEGER PRIMARY KEY ASC,
   x1_y1 INTEGER,
   x1_y2 INTEGER,
   x1_y3 INTEGER,
   x1_y4 INTEGER,
   x1_y5 INTEGER,
   x2_y1 INTEGER,
   x2_y2 INTEGER,
   x2_y3 INTEGER,
   x2_y4 INTEGER,
   x2_y5 INTEGER,
   x3_y1 INTEGER,
   x3_y2 INTEGER,
   x3_y3 INTEGER,
   x3_y4 INTEGER,
   x3_y5 INTEGER,
   x4_y1 INTEGER,
   x4_y2 INTEGER,
   x4_y3 INTEGER,
   x4_y4 INTEGER,
   x4_y5 INTEGER,
   x5_y1 INTEGER,
   x5_y2 INTEGER,
   x5_y3 INTEGER,
   x5_y4 INTEGER,
   x5_y5 INTEGER
);
CREATE INDEX HASH_X1_Y1_IDX ON HASH (X1_Y1);
CREATE INDEX HASH_X2_Y2_IDX ON HASH (X2_Y2);
CREATE INDEX HASH_X3_Y3_IDX ON HASH (X3_Y3);
CREATE INDEX HASH_X4_Y4_IDX ON HASH (X4_Y4);
CREATE INDEX HASH_X5_Y5_IDX ON HASH (X5_Y5);


with millions of rows, how to optimize such query :

Select
   ID
from
   HASH
where
   x1_y1 >= <#randomnumber1> and
   x1_y1 <= <#randomnumber1>+ 20 and
   x1_y2 >= <#randomnumber4> and
   x1_y2 <= <#randomnumber4> + 20 and
   x1_y3 >= <#randomnumber7> and
   x1_y3 <= <#randomnumber7> + 20 and
   x1_y4 >= <#randomnumber10> and
   x1_y4 <= <#randomnumber10> + 20 and
   x1_y5 >= <#randomnumber13> and
   x1_y5 <= <#randomnumber13> + 20 and
   x2_y1 >= <#randomnumber16> and
   x2_y1 <= <#randomnumber16> + 20 and
   x2_y2 >= <#randomnumber19> and
   x2_y2 <= <#randomnumber19> + 20 and
   x2_y3 >= <#randomnumber22> and
   x2_y3 <= <#randomnumber22> + 20 and
   x2_y4 >= <#randomnumber25> and
   x2_y4 <= <#randomnumber25> + 20 and
   x2_y5 >= <#randomnumber28> and
   x2_y5 <= <#randomnumber28> + 20 and
   x3_y1 >= <#randomnumber31> and
   x3_y1 <= <#randomnumber31> + 20 and
   x3_y2 >= <#randomnumber34> and
   x3_y2 <= <#randomnumber34> + 20 and
   x3_y3 >= <#randomnumber37> and
   x3_y3 <= <#randomnumber37> + 20 and
   x3_y4 >= <#randomnumber40> and
   x3_y4 <= <#randomnumber40> + 20 and
   x3_y5 >= <#randomnumber43> and
   x3_y5 <= <#randomnumber43> + 20 and
   x4_y1 >= <#randomnumber46> and
   x4_y1 <= <#randomnumber46> + 20 and
   x4_y2 >= <#randomnumber49> and
   x4_y2 <= <#randomnumber49> + 20 and
   x4_y3 >= <#randomnumber52> and
   x4_y3 <= <#randomnumber52> + 20 and
   x4_y4 >= <#randomnumber55> and
   x4_y4 <= <#randomnumber55> + 20 and
   x4_y5 >= <#randomnumber58> and
   x4_y5 <= <#randomnumber58> + 20 and
   x5_y1 >= <#randomnumber61> and
   x5_y1 <= <#randomnumber61> + 20 and
   x5_y2 >= <#randomnumber64> and
   x5_y2 <= <#randomnumber64> + 20 and
   x5_y3 >= <#randomnumber67> and
   x5_y3 <= <#randomnumber67> + 20 and
   x5_y4 >= <#randomnumber70> and
   x5_y4 <= <#randomnumber70> + 20 and
   x5_y5 >= <#randomnumber73> and
   x5_y5 <= <#randomnumber73> + 20;

because they takes very very lot of time (hourS) to return :(
on other SGBD (like Firebird) with same amount of data
they return immediatly ...

Thanks by advance
stéphane
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to