KB2938462. ВИПРАВЛЕННЯ. Під час запиту в SQL Server 2014 повертаються відсутні або неправильні відомості про відсутні індекси

Застосовується до
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Ознаки

Припустимо, ви використовуєте Microsoft SQL Server 2014. SQL ServerДо нотаток про випуск 2014 року можуть входити такі дві проблеми:

  • Відсутні відомості індексу неправильно Звіт включено стовпці для оптимізованої пам'яті таблиці

    Проблема: якщо застосунок SQL Server 2014 виявить відсутній індекс для запиту в оптимізованій для пам'яті таблиці, програма повідомить про відсутність індексу в SHOWPLAN_XML, а також у відсутніх індексах DMV, таких як sys.dm_db_missing_index_details. У деяких випадках відсутні відомості про індекс міститимуть включені стовпці. Оскільки всі стовпці неявно включені в усі індекси оптимізованих для пам'яті таблиць, явно вказувати включені стовпці з індексами, оптимізованими для пам'яті, не дозволяється.

  • Якщо відсутні відомості про індекс, відсутні індекси можна пропустити, якщо індекс решітки існує, але не підходить для запиту

    Проблема: якщо у вас є індекс HASH у стовпцях оптимізованої пам'яті таблиці, на яку посилається запит, але індекс не можна використовувати для запиту, SQL Server 2014 не завжди повідомлятиме про відсутність індексу в SHOWPLAN_XML і в sys.dm_db_missing_index_details DMV.

    Зокрема, якщо запит містить предикати рівності, які охоплюють підмножину ключових стовпців індексу, або якщо він містить предикати нерівності, які охоплюють стовпці ключів індексу, індекс HASH не можна використовувати в початковому вигляді, і для ефективного виконання запиту знадобиться інший індекс.

Причина

Проблеми виникають через те, що відсутня логіка індексування в оптимізаторі запитів не розрізняє традиційні некластеризовані індекси на дискових таблицях і нові типи індексів для таблиць, оптимізованих для оптимізації пам'яті.

Спосіб усунення проблеми

Проблеми вперше виправлено в наступному сукупному оновленні SQL ServerSQL Server. 

Сукупний пакет оновлень 1 за SQL Server 2014 р. /uk-ua/help/2931693

Відомості про сукупні оновлення для SQL ServerSQL Server

Кожне нове сукупне оновлення для SQL Server містить усі виправлення та виправлення системи безпеки, які входили до попереднього сукупного пакета оновлень. Перегляньте останні сукупні оновлення для SQL Server.

      

Спосіб вирішення

Щоб вирішити ці проблеми, скористайтеся наведеними нижче способами вирішення.

  • Вирішення проблеми: неправильно відсутні відомості індексу у звіті включено стовпці для оптимізованої пам'яті таблиці

    Не вказуйте речення INCLUDE з індексами в оптимізованих для пам'яті таблицях.

  • Вирішення проблеми: якщо відсутні відомості про індекс, відсутні індекси пропускаються, якщо індекс решітки існує, але не підходить для запиту

    Якщо ви використовуєте індекси решітки, перевірте запити та плани запитів, щоб визначити, чи можуть бути корисні для запитів операції пошуку індексу для підмножини ключа індексу або операції пошуку індексу для предикатів нерівності. Якщо потрібно знайти підмножину ключа індексу, використовуйте індекс НЕКЛАСТЕРИЗОВАНИЙ або використовуйте індекс HASH саме для тих стовпців, які вам потрібні. Якщо потрібно знайти предикат нерівності, використовуйте індекс NONCLUSTERED замість HASH.

Примітка. Способи вирішення додано до нотаток про випуск SQL Server 2014

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".