0

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

假设每个表包含 100 万行。

4

1 回答 1

1

像您提到的那样对表进行索引已经非常好,但是根据索引顺序在磁盘上对表进行物理排序使其几乎是理想的。

为此,您可以在 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应该尽可能快(没有将这些表合并为一个)。

于 2013-03-02T07:34:14.217 回答