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

Откуда:
Сообщений: 373
Есть таблица из 3 стобцов.
ID - перв ключ по которому происходят частые поиски
UserName - в нем куча повторений и по нему тоже постоянные поиски
Date - просто дата и по ней ниче никогда не ищем.

В таблицу происходят постоянные вставки значений. Если взять соотношения считал/вставил то считывается конечно в разы чаще но и вставки тоже не редки.

Нужен ли индекс на UserName ?
17 июн 15, 09:37    [17780142]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли индекс  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
-- отсутствующие индексы, вызывающие издержки
SELECT [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0),
       avg_user_impact,
       TableName = statement,
       [EqualityUsage] = equality_columns,
       [InequalityUsage] = inequality_columns,
       [Include Cloumns] = included_columns
  FROM sys.dm_db_missing_index_groups g 
  INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle 
  INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle
  WHERE database_id = DB_ID()
  ORDER BY [Total Cost] DESC;
17 июн 15, 09:41    [17780157]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли индекс  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
sanekoffice
UserName - в нем куча повторений и по нему тоже постоянные поиски
Какого рода поиски? Типичный пример покажите.
17 июн 15, 09:42    [17780159]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли индекс  [new]
sanekoffice
Member

Откуда:
Сообщений: 373
А можно я по другому спрошу?
Тестовый стенд табл из 3 полей:
ID_Blank -- вторичн клчюч на др таблицу. Уникальные значения. Тут не кластерный стоит
UserName - повторений тьма тьмущая
Date - просто datetime, всегда уникально

Как сплонировать индексацию если:
1) Часто ищу по всем трем полям. Как лучше сделать? Может составной PK не все 3 поля?
2) Ищу только по Date - остальные не трогаю. Насколько datetime годится под кластерный?
3) Если ищу по Date и UserName - имеет смысл поставить на них кластерн и оставить некластерн на ID_Blank?

Заранее спасибо. Это просто в целях развития вопрос...
17 июн 15, 11:33    [17780864]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли индекс  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
sanekoffice, выполните, наконец, скрипт от Критик.
Погоняйте перед этим запросы пару дней. Здесь бесполезно гадать, нужны измерения.
17 июн 15, 11:36    [17780899]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли индекс  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
sanekoffice,

трудно написать условие для UserName, по котрому Вы обычно выполняете поиск?
К примеру, если что-то типа LIKE '%тра-ля-ля', то индекс будет бесполезен.
17 июн 15, 11:46    [17780992]     Ответить | Цитировать Сообщить модератору
 Re: Нужен ли индекс  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
sanekoffice
А можно я по другому спрошу?
Тестовый стенд табл из 3 полей:
ID_Blank -- вторичн клчюч на др таблицу. Уникальные значения. Тут не кластерный стоит
UserName - повторений тьма тьмущая
Date - просто datetime, всегда уникально

Как сплонировать индексацию если:
1) Часто ищу по всем трем полям. Как лучше сделать? Может составной PK не все 3 поля?
2) Ищу только по Date - остальные не трогаю. Насколько datetime годится под кластерный?
3) Если ищу по Date и UserName - имеет смысл поставить на них кластерн и оставить некластерн на ID_Blank?

Заранее спасибо. Это просто в целях развития вопрос...

1. если ид уникальный - то при поиске по трем полям - достаточно уже его одного!! Разве что можно инклюде сделать.
2. то ищешь по дате то не ищешь. Не понятно!! Опять же если только по дате - обычный индекс прекрасно пойдет.
3. опять же если ищешь по дате + юзернэйм, а дата уникальна - достаточно одного индекса по дате!
4. Кластерный делай на поле которое строго возрастает с каждой вставкой - иначе фрагментация потом будет проблемой.
17 июн 15, 12:14    [17781262]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить