Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как правильно построить индексы в MS SQL?  [new]
Olga_3005
Member

Откуда:
Сообщений: 3
Доброе время суток!

Имеется таблицу, которая содержит 160 полей, без внешних ключей
Количество строк - 1 миллион.
Нам необходимо сделать выборку по 14 полям от значения - до значения (поля не входят
в первичный ключ), причем количество и состав полей, участвующих в выборке могут меняться в зависимости
от установок пользователя. Сортировка выбранных записей тоже должна осуществляться по полям не входящим
в первичный ключ.
Например: пользователь может отправить запрос на выборку записей по: наименованию, № договора, дате
заключения договора, типу договора, сумме и т.п. с сортировкой по наименованию)

Посоветуйте, пожалуйста, как правильно построить индексы для этой таблицы для минимизации времени
выполнения этого запроса?
4 сен 09, 16:58    [7619792]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно построить индексы в MS SQL?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Olga_3005,

как всегда - надо смотреть на конкретные запросы. Если выборка идет по группе полей - поля в индекс ставятся в порядке убывания селективности. Если идет сортировка по тем же полям - возможно будет удобнее поставить в порядке сортировки. Хотите конкретнее - задавайте более конкретные вопросы.
4 сен 09, 17:04    [7619843]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно построить индексы в MS SQL?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Olga_3005
Например: пользователь может отправить запрос на выборку записей по: наименованию, № договора, дате
заключения договора, типу договора, сумме
А разве пользователь помнит наизусть номер договора, его дату и тип
а особенно сумму ?
Это не человек, это робот какой-то...
4 сен 09, 17:05    [7619851]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно построить индексы в MS SQL?  [new]
aleks2
Guest
Паганель
Olga_3005
Например: пользователь может отправить запрос на выборку записей по: наименованию, № договора, дате
заключения договора, типу договора, сумме
А разве пользователь помнит наизусть номер договора, его дату и тип
а особенно сумму ?
Это не человек, это робот какой-то...


Ну что-то типа "около того" правильный пользователь обычно помнит. Просто поиск надо организовывать соответственно...

Тредстартеру: DDL таблицы и примеры запросов давайте. А то по фотке будут лечить кариес, вместо геморроя...
4 сен 09, 17:14    [7619923]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно построить индексы в MS SQL?  [new]
ChA
Member

Откуда: Москва
Сообщений: 10989
Olga_3005
Имеется таблицу, которая содержит 160 полей
Это сильно. Хотелось бы глянуть на поля.
4 сен 09, 17:33    [7620044]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно построить индексы в MS SQL?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36801
ChA
Olga_3005
Имеется таблицу, которая содержит 160 полей
Это сильно. Хотелось бы глянуть на поля.

create table ... (
  ...
  , field_3
  , field_4
  , field_5
  , ...
  , field_160
)
:)
4 сен 09, 17:37    [7620073]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно построить индексы в MS SQL?  [new]
ChA
Member

Откуда: Москва
Сообщений: 10989
Гавриленко Сергей Алексеевич

create table ... (
  ...
  , field_3
  , field_4
  , field_5
  , ...
  , field_160
)
:)
Ну, тогда только в морг.
4 сен 09, 17:44    [7620108]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить