我有一个1000x1000矩阵,每个条目中都有一些数据。按偏移量访问表(?)
是否有可能在表中顺序存储它(即,前一行旁边的一行)?我的意思是,如果我可以通过偏移量访问表(就像数组一样),由于我不会添加/删除任何条目,我会节省键的空间,这在这里显然是多余的。
可能吗?谢谢!
我有一个1000x1000矩阵,每个条目中都有一些数据。按偏移量访问表(?)
是否有可能在表中顺序存储它(即,前一行旁边的一行)?我的意思是,如果我可以通过偏移量访问表(就像数组一样),由于我不会添加/删除任何条目,我会节省键的空间,这在这里显然是多余的。
可能吗?谢谢!
表格没有订单。他们没有顺序。关键不是多余的,因为它告诉你如何访问你的数据。如果我模拟这个我会做它像这样:
CREATE TABLE My_Matrix AS (
row_num SMALLINT NOT NULL,
col_num SMALLINT NOT NULL,
value INT NOT NULL, -- Or whatever data type is appropriate
CONSTRAINT PK_My_Matrix PRIMARY KEY CLUSTERED (row_num, col_num),
CONSTRAINT My_Matrix_row_num_chk CHECK (row_num BETWEEN 1 AND 1000),
CONSTRAINT My_Matrix_col_num_chk CHECK (col_num BETWEEN 1 AND 1000)
)
现在,如果你想获得的行数和列数的值,那么你可以迅速得到与:
SELECT value FROM My_Matrix WHERE row_num = @row_num AND col_num = @col_num
如果你想通过一个偏移量,那么你可以使用像得到它:
SELECT
value
FROM
My_Matrix
WHERE
row_num = @value%1000 AND
col_num = @value/1000
至于节省存储,你说的每行约在这里4个字节,与具有最多100万行的矩阵。对于任何严重的RDBMS来说,这是非常不相关的。
一百万行是一个相当小的表,所以我开始假设是类似以下内容:
CREATE TABLE tbl1 (x INT NOT NULL, y INT NOT NULL, ... some data ... , PRIMARY KEY (x,y));
RDBMS是什么?矩阵元素是什么数据类型?他们固定长度? –
我打算使用SQLite。这些元素由一个固定长度的结构组成。 – Metz