

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 交错排序键
<a name="t_Sorting_data-interleaved"></a>

交错排序为排序键中的每个列或列的子集赋予相同的权重。如果多个查询使用不同的列作为筛选条件，则通常可以使用交错排序方式来提高这些查询的性能。当查询对辅助排序列使用限制性谓词时，与复合排序相比，交错排序可显著提高查询的性能。

**重要**  
不要在具有单调递增属性的列（例如，身份列、日期或时间戳）上使用交错排序键。

您应将实施交错排序键获得的性能提升与增加的负载和 vacuum 次数进行权衡。

交错排序对于高选择性查询（在 WHERE 子句中对一个或多个排序键列进行筛选的查询，如 `select c_name from customer where c_region = 'ASIA'`）最为有效。交错排序的优势随着受限制排序列数量的增加而增大。

交错排序对于大型表更为有效。排序应用于每个切片。因此，当某张表大到足以使每个切片占用多个 1 MB 数据块时，交错排序最为有效。在这里，查询处理器可以使用限制性谓词跳过大部分数据块。要查看表使用的数据块数，请查询 [STV\$1BLOCKLIST](r_STV_BLOCKLIST.md) 系统视图。

 对单一列进行排序时，如果该列的值拥有较长的共同前缀，则交错排序的性能要优于复合排序。如都以“http://www”打头的 URL。复合排序键使用前缀中有限数量的字符，因此会产生大量的重复键。交错排序为区域映射值使用了内部压缩方案，使它们能够更好地区分具有较长共同前缀的列值。

 当将 Amazon Redshift 预置集群迁移到 Amazon Redshift Serverless 时，Redshift 同时将具有交错排序键和 DISTSTYLE KEY 的表转换为复合排序键。但是，只具有交错排序键的表保持不变。有关分配方式的更多信息，请参阅[使用数据分配方式](https://docs.aws.amazon.com//redshift/latest/dg/t_Distributing_data.html)。
<a name="t_Sorting_data-interleaved-reindex"></a>
**VACUUM REINDEX**  
在您向已包含数据的排序表中不断添加行的过程中，性能会逐渐下降。复合排序和交错排序都会出现这种性能下降，但交错表受到的影响更大。VACUUM 可恢复排序顺序，但对于交错表，该操作可能需要花费更长的时间，因为合并新的交错数据可能涉及到修改每一个数据块。

初次加载表时，Amazon Redshift 会分析值在排序键列中的分配，并利用该信息来优化排序键列的交错操作。随着表的增大，排序键列中值的分配可能会发生变化或偏斜，日期或时间戳列的变化或偏斜更加明显。如果偏斜过大，则性能会受到影响。要重新分析排序键并恢复性能，请运行包含 REINDEX 关键字的 VACUUM 命令。对于交错表，由于它必须对数据进行额外的分析，因此，VACUUM REINDEX 需要花费比标准 VACUUM 操作还要长的时间。要查看有关键分配偏斜和上次重建索引时间的信息，请查询 [SVV\$1INTERLEAVED\$1COLUMNS](r_SVV_INTERLEAVED_COLUMNS.md) 系统视图。

有关如何确定运行 VACUUM 的频度和运行 VACUUM REINDEX 的时机的更多信息，请参阅[决定是否重建索引](vacuum-managing-vacuum-times.md#r_vacuum-decide-whether-to-reindex)。