У меня есть следующий запрос в SQL Server 2005:хеширования Отображение на полный текст запроса - SQL Server 2005
SELECT
PRODUCT_ID
FROM
PRODUCTS P
WHERE
SUPPLIER_ORGANIZATION_ID = 13225
AND ACTIVE_FLAG = 'Y'
AND CONTAINS(*, 'FORMSOF(Inflectional, "%clip%") ')
Что интересно, что с помощью этого генерирует Hash Match, тогда как, если я использую другую SUPPLIER_ORGANIZATION_ID
(более старый поставщик), он использует Merge Join. Очевидно, что Hash намного медленнее, чем Merge Join. То, что я не получаю, - это то, почему есть разница и что нужно, чтобы заставить его работать быстрее?
FYI, в таблице ПРОДУКТОВ содержится около 5 миллионов записей. Когда выбран идентификатор организации поставщика (13225), для этого поставщика имеется около 25000 продуктов.
Заранее спасибо.
SQL Server - какая версия? Пожалуйста, добавьте эту информацию (как тег, и, возможно, в сам вопрос). – Tomalak
SQL Server 2005. Модификации выпуска. – 2009-03-25 19:19:41
Спасибо. +1 для вопроса. Я не могу ответить на это точно, но вы пробовали DBCC DBREINDEX и СТАТИСТИКУ ОБНОВЛЕНИЯ на столе? – Tomalak