索引字段上的单列 SELECT 甚至不需要读取任何数据文件记录。如果您深入了解,您会发现索引文件是一个普通的哈希文件,单列 SELECT 仅表示读取了键为“str”的索引文件记录。这可以在不到一秒的时间内返回成千上万个密钥。
添加第二列后,您可能会强制系统读取所有成千上万条记录,即使第二列已编入索引。这将需要更多的时间。
通常,具有少量唯一值的字段上的索引的用途是可疑的。如果第二列包含具有大量可能值的数据,导致每个特定索引值的记录数量较少,那么最好安排 SELECT 以便使用的索引位于第二列上。我不确定,但可以简单地颠倒 SELECT 语句中列的顺序来执行此操作。否则,您可能需要背靠背运行两个 SELECT 语句。
例如,假设文件有 600,000 条 Column1 = "str" 的记录,以及 2,000 条 Column2 = "int" 的记录:
>SELECT somewhere WITH Column2 = "int"
>>SELECT somewhere with Column1 = "str"
将读取 2,000 条记录并且应该几乎立即返回。
如果您将经常选择 Column1 和 Column2 的组合,那么您可能希望创建一个将两者结合起来的新字典项,并在其上建立索引。
话虽如此,U2 系统不应该花费 5 分钟来运行一百万条记录的文件。文件严重溢出的可能性很大,需要使用更大的模数来调整大小以提高性能。