优化一对一数据库连接的策略是什么,除了索引和可能合并表之外?
假设表中每行包含100万行。
答案 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
连接这些表应该尽可能快(不要将这些表合并为一个)。