Это кажется странным вопросом. Я знаю разные типы индексов в sql-сервере (кластерный, некластеризованный, уникальный, отфильтрованный, индекс с включенными столбцами и т.д.), И я знаю, как их создавать. Также я знаю, что индекс зависит от запроса, но я не знаю, кто выбирает столбец при создании индекса. Например, предположим, что простой веб-сайт позволяет пользователям публиковать текст и изображения. На веб-сайте есть две две таблицы, показанные на изображении:
Запрос пользователя на веб-сайте:
Select UserID,UserName from User where Email='something' and Password='something'
Предположим, что я хочу создать индекс для этой таблицы, в каком столбце (столбцах), который я должен включить в создание индекса? Я знаю, что разные типы индексов могут включать разные столбцы, но кто я могу решить при создании кластеризованных или некластеризованных столбцов, которые должны быть выбраны. Я вижу несколько примеров индексов, которые почти всегда выбирают столбец после предложения where. Это правда?
Запрос, который получает сообщения пользователя:
Select * from Posts where UserID='something'
Этот запрос отличается от первого запроса. Этот запрос может возвращать несколько строк, в то время как первый всегда будет возвращать одну строку. Теперь тот же вопрос, как выбрать столбец?
Я хочу сказать, как выбрать столбцы, когда:
- Создание кластерного индекса.
- Создание некластеризованного индекса.
- Создание некластеризованных с включенными столбцами.
Приведенный выше пример просто иллюстрирует идею вопроса. Цель состоит не в том, чтобы найти хороший индекс для двух запросов в примере, а для создания базы, которая может использоваться для выбора столбцов при создании индекса.