Я предлагаю выражение EXISTS
в сочетании с оконной функцией (lead()
или lag()
) в подзапросе.EXISTS
прекратит сканирование, как только будет найдена первая строка, что может быть существенно быстрее для больших таблиц:
SELECT EXISTS (
SELECT FROM (SELECT col, lead(col) OVER (ORDER BY id) AS next_col FROM tbl) t
WHERE col >= next_col
OR col IS NULL
);
id
- столбец, определяющий порядокстроки.
Если ваше условие выполнено ( "столбец имеет все возрастающие значения" ), он возвращает FALSE
.
Пока столбец не определен NOT NULL
также исключите NULL
значения, которые всегда будут нарушать ваше условие.