План выполнения SQL показывает “Фактическое Количество строк”, которое больше, чем размер таблицы

partition by orderdate означает, что вы сравниваете записи только с другими записями с такими же orderdate. Например, из пяти записей с orderdate = '08/01/2001' одна будет иметь row_number() = 1, одна будет иметь row_number() = 2 и т. Д.

order by orderdate asc означает, что в пределах раздела номера строк должны присваиваться в порядке orderdate. В вашем примере это не имеет никакого эффекта, потому что вы уже разбиваете на orderdate, поэтому все записи в пределах раздела будут иметь одинаковое значение orderdate. (Это было бы похоже на запись SELECT ... FROM t WHERE c = 6 ORDER BY c: все выбранные записи имеют одинаковое значение c, поэтому ORDER BY c ничего не делает.) Таким образом, в пределах раздела назначение row_number() является произвольным: каждая строка будет иметь другое число, но нет никаких гарантий относительно того, какой ряд будет иметь какой номер.

5
задан Dustin Laine 8 June 2011 в 16:57
поделиться

2 ответа

ActualRows подсчитывает, сколько раз GetNext () было вызвано для физического оператора.

Вы также должны посмотреть на ActualRebinds, ActualRewinds и ActualEndOfScans , чтобы получить представление о том, сколько раз внутренний цикл переоценивался:

повторная привязка означает, что один или несколько коррелированные параметры соединения изменен и внутренняя сторона должна быть переоценен. перемотка означает, что ничего коррелированных параметров изменились и предыдущий внутренний набор результатов может быть reused.

10
ответ дан 18 December 2019 в 14:50
поделиться

фактическое количество значений строк является результатом всех обработанных значений для этого узла в плане выполнения. так что да, это учитывает соединение вложенных циклов.

3
ответ дан 18 December 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: