Проблемы
Предположим, что вы используете Microsoft SQL Server 2014. Вы можете столкнуться со следующими двумя проблемами, которые включены в заметки о выпуске SQL server 2014:
-
Сведения об отсутствующих индексах неправильно сообщают включаемые столбцы для ошибки, оптимизированной для памяти: если SQL Server 2014 обнаруживает отсутствующий индекс для запроса в таблице, оптимизированной для памяти, она будет сообщать об отсутствующем индексе в SHOWPLAN_XML, а также в представлениях DMV отсутствующих индексов, таких как sys.dm_db_missing_index_details. В некоторых случаях сведения об отсутствующих индексах будут содержать включенные столбцы. Поскольку все столбцы неявно включены со всеми индексами в таблицах, оптимизированных для памяти, не допускается явное указание включенных столбцов с помощью индексов, оптимизированных для памяти.
-
Сведения об отсутствующих индексах содержат отсутствующие индексы, если хэш-код существует, но не подходит для проблем с запросом: если у вас есть хэш-индекс для столбцов оптимизированной для памяти таблицы, на которую ссылается запрос, но этот индекс нельзя использовать для запроса, SQL Server 2014 не всегда будет сообщать об отсутствующем индексе SHOWPLAN_XML и в sys.dm_db_missing_index_detailsе DMV. В частности, если запрос содержит предикаты равенства, которые включают подмножество столбцов ключа индекса или содержат предикаты неравенства, которые включают ключевые столбцы индекса, хэш-индекс не может использоваться, как есть, и для эффективного выполнения запроса требуется другой индекс.
Причина
Проблемы возникают из-за того, что логика отсутствующих индексов в оптимизаторе запросов не различает традиционные некластеризованные индексы на дисковых таблицах и новые типы индексов для оптимизированных для памяти таблиц.
Решение
Эти проблемы впервые были устранены в следующем накопительном обновлении SQL Server.
Накопительное обновление 1 для SQL Server 2014 /en-us/help/2931693
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Обходное решение
Для решения этих проблем используйте описанные ниже временные решения.
-
Временное решение проблемы: неправильное указание отсутствующих индексов. данные о столбцах, оптимизированные для памяти tableDo, не задают предложение INCLUDE с индексами для оптимизированных в памяти таблиц.
-
Временное решение проблемы: отсутствующие индексы пропущены. Если хэш-код существует, но не подходит для случая запроса с использованием хэш-индексов, проверьте запросы и планы запросов, чтобы определить, могут ли запросы выдавались выгодным операциям поиска индексов на подмножестве ключа индекса или операциями поиска по индексу для предикатов неравенства. Если вы хотите выполнить поиск по подмножеству ключа индекса, используйте некластеризованный индекс или индекс ХЭШИРОВАНия в том случае, если нужно найти нужные столбцы. Если необходимо выполнить поиск по предикату неравенства, используйте некластеризованный индекс вместо HASH.
Примечание. Обходное решение — заметки о выпуске SQL server 2014
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".