可能优化一对一关系数据库关系

时间:2013-03-01 07:34:47

标签: sql-server sqlite optimization

优化一对一数据库连接的策略是什么,除了索引和可能合并表之外?

假设表中每行包含100万行。

1 个答案:

答案 0 :(得分:1)

像你提到的那样为你的表编制索引已经相当不错了,但是根据索引顺序在磁盘上物理排序表几乎是理想的。

为此,您可以创建clustered indexes in SQL Server(其他一些数据库也支持聚簇索引,如PostgreSQL)。不幸的是,SQLite不支持聚簇索引。显然,只能对一个索引进行聚类 - 基本上,这是一个表页将尝试在磁盘上进行物理排序的索引。

此外,在所有数据库(包括SQLite)上,您只需复制表,同时根据索引重新排序,使用类似

的内容
CREATE TABLE mytable_ordered AS
SELECT * FROM mytable
ORDER BY key_column;

DROP TABLE mytable;

ALTER TABLE mytable_ordered RENAME TO mytable;

CREATE INDEX mytable_key_column_idx ON mytable (key_column);

你应该在你提到的另一张大桌子上做同样的事情。 在此之后,按顺序键1:1连接这些表应该尽可能快(不要将这些表合并为一个)。