Похоже, что это было пропущено планировщиком запросов Снежинки. Я не вижу никаких документов, указывающих c на этот пример, хотя. Исходя из моего опыта, основанного на опыте в других dbms, моя теория заключается в том, что это имеет отношение к сарказуемости.
Быстрый поиск в Google по sargable сделает для вас больше, чем ответ. Короче говоря, предикаты, которые могут использовать индекс, считаются допустимыми. У большинства dbms есть ситуации, когда предикат, очевидно, не будет вмешиваться в индекс (ваш пример - хороший пример), но оптимизатору не будет задана конкретная ситуация c, и он примет решение: «Ну, я не уверен» если индекс все еще может быть использован, поэтому я предполагаю, что они не могут и делают это долгий путь "
Так что мне интересно, происходит ли что-то подобное здесь, поскольку Snowflake делает что-то другое под капот для оптимизации и «индексации», чем большинство других систем. В вашем примере я бы предположил, что в случае 2 он может определить, что у него два отсортированных списка чисел, и ему просто нужно пройти по двум спискам по порядку. Тогда как в первом списке он решает: «У меня есть два отсортированных списка номеров, но это не относится к моему предикату соединения ... лучше сравнивать каждую строку с каждой другой строкой и проверять предикат каждый раз»
Я бы порекомендовал отправить это Snowflake в тикете поддержки.