除了索引和可能合并表之外,优化一对一数据库连接的策略是什么?
假设每个表包含 100 万行。
像您提到的那样对表进行索引已经非常好,但是根据索引顺序在磁盘上对表进行物理排序使其几乎是理想的。
为此,您可以在 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
应该尽可能快(没有将这些表合并为一个)。