在 WHERE IN 子句中,值的顺序是否重要?(这是 Firebird SQL 的问题)
例如,以下语句是否相同:
where field1 in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
提供比...更高的性能水平
where field1 in (3, 5, 10, 2, 1, 8, 6, 9, 4, 7)
在 WHERE IN 子句中,值的顺序是否重要?(这是 Firebird SQL 的问题)
例如,以下语句是否相同:
where field1 in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
where field1 in (3, 5, 10, 2, 1, 8, 6, 9, 4, 7)
是的,但实现方式可能会有所不同。IN 被处理为连续的 OR,最可能的处理顺序应该是按照书写顺序。
即便如此,我会首先假设优化器会按给定的顺序处理元素,因为这样最简单,并将它们在集合中从最可能到最不可能进行排名。这样做并不会有坏处,很可能会有帮助。但是否差异有显著的可测量性则是另一个问题;请进行测量并告知我们。
delphi
标签,因为你的问题与 Delphi 毫无关系。请仅使用实际适用于您问题的标签;标签的目的是将问题分类到相应的类别中。谢谢。 - Ken White