Как оптимизировать индексы для таблицы SQL Server - PullRequest
0 голосов
/ 28 декабря 2018

У меня следующий запрос

SELECT 
    vbShape, XMIN, YMIN, XMAX, YMAX,  GlobalID
FROM
    (SELECT * 
     FROM features 
     WHERE vbShape IS NOT NULL) A
WHERE 
    XMIN <= -13036746.0212491 AND XMAX >= -13037147.3156476 AND 
    YMIN <= 3988531.90850796 AND YMAX >= 3988130.61410953

XMIN, XMAN, YMIN, YMAX - все плавающие столбцы.

Мне нужно, чтобы этот запрос выполнялся как можно быстрее.Каждая миллисекунда имеет решающее значение.GlobalID является первичным ключом.Какие индексы я должен добавить для этой таблицы?В настоящее время у меня есть 4 некластеризованных индекса, определенных в таблице для полей XMIN, XMAX, YMIN и YMAX.Должен ли я также определить один индекс, чтобы включить все поля?Или я должен добавить два индекса?Один для XMIN / XMAX и один для YMIN / YMAX?Есть ли проблемы с добавлением слишком большого количества индексов?

1 Ответ

0 голосов
/ 28 декабря 2018

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

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

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