Как сканирование таблицы может вернуть больше строк, чем в таблице?

У меня сложный запрос к базе данных с плохой статистикой и фрагментированными индексами. Что меня озадачивает, так это то, что когда я изучаю реальный план запроса, я получаю 54 миллиона строк при сканировании таблицы, содержащей 23 тысячи строк. Гораздо дальше по плану запроса эта таблица объединяется сама с собой (только 260 K строк из 23 K). Как это возможно?

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

Я воспроизвел это с SQL 2005 и SQL 2008 R2 при восстановлении той же базы данных.

Обновление: Да, это реальный план. Количество строк - 20039 (не 23 КБ, как упоминалось выше). Это один из крайних правых узлов.

7
задан PavelR 27 May 2011 в 00:06
поделиться