powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по рекомендациям для создания индексов.....
10 сообщений из 10, страница 1 из 1
Вопрос по рекомендациям для создания индексов.....
    #32043997
tav2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема - есть две базы и хранимая процедура, которая
копирует данные из одной таблицы первой базы в другую таблицу(соответственно другой базы), в execution plan видно что основные ресурсы жрет table scan (для таблицы из которой копируются данные) поскольку у таблицы около 3 млн. строк, то напрашивается сделать индексы на таблицу.
Вопрос1 - вообще эффективны ли будут в данном случае индексы.
Вопрос2 - таблица представляет собой статистику пользования интернетом(лог из ISA Server- пользователь , имя,ip, время , дата, программа и т.д.), по какому столбцу лучше проводить индексирование? Зарание признателен за любые мысли и советы....
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044001
Rom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в запросе используется объединение таблиц ? есть ли условие where ? order by ?
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044002
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если копируеш за диапазон дат то на столбец даты.....
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044005
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вкратце - индексировать нужно те столбцы, которые учавствуют в предложении WHERE запроса.
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044026
tav2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот моя процедура-INSERT INTO w3_grupp_log_t (ClientIP,ClientUserName, DestHost, DestHostIP, ClientAgent, service, logdate, col, summss,
bytesrecvd, bytessent)
select ClientIP,ClientUserName,DestHost, DestHostIP, ClientAgent, service, logdate ,'col'=count(ClientUserName) ,
'summss'=sum(bytesrecvd)+sum(bytessent) , 'bytessent'=sum(bytessent),'bytesrecvd'=sum(bytesrecvd)
from mspsrvlog
where
logdate>=@d1 /*and logdate<=@d2 */
and bytesrecvd>0.0 and bytesrecvd<10000000.0 and bytessent>0.0 and bytessent<10000000.0
group by ClientUserName, ClientIP, DestHost, DestHostIP, ClientAgent, service, logdate
order by ClientAgent
GO Может быть кто еще что посоветует?
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044032
Soulhunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Logdate сделай кластерным индексом, тогда не будет сканирования всей таблицы!
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044034
tav2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще то я знаю что поля типа datetime (а именно такое поле logdate)не рекомендуется делать индексом ...может кто-либо пояснит?(информация с сайта Открытых Систем)...
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044247
Soulhunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
могу тебе пояснить. У тебя дело в том, что используя вышеописанный запрос ты можешь избавиться от сканирования таблицы только так! Иначе, даже в случае создания некластерного индекса по полю logdate, в случае когда интервал logdate>=@d1 and logdate<=@d2 окажется слишком велик, оптимизатор будет использовать сканирование таблицы. А вообще мой те совет, когда стоит проблема выбора индексов, то необходима серия тестов и замеры по быстродействию, также нелишним будет оценка эффективности каждого индекса путем вычисления коэффициента избирательности и плотности индекса. Вобщем без этого трудно дать однозначный совет!
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044293
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая вещь (начиная с MS SQL7) - Index Tuning Wizard.
Помогает создать необходимые индексы для наиболее часто применяемых SQL запросов.
В качестве источника информации (для анализа) необходимо иметь Trace файл или просто выделить в Query Analyser нужные запросы и запустить мастера (для QA2000 - комбинация клавиш Ctrl+I).

Потом указываешь предпочтительные опции и он выдает список рекомендуемых индексов. При необходимости - можно и создать их сразу.
Качество рекомендаций таково, что позволяет повысить производительность запросов на порядок (естественно, если ты не занимался оптимизацией БД сам).

Но необходимо учесть, что:
- после создания рекомендуемых индексов необходимо запустить мастера еще раз, чтобы убедиться, что весь потенциал исчерпан (часто при повторном запуске мастер "находит" еще пару индексов, которые могут повлиять на быстродействие)
- слишком много индексов замедлят операции обновления/вставки записей (подумать тоже придется).
...
Рейтинг: 0 / 0
Вопрос по рекомендациям для создания индексов.....
    #32044710
rommi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есл копируешь редко, то на мой взгляд, лучше перед копированием удалить все индексы в таблице-получателе, а после - создать их (обязательно первыми - кластерные).
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по рекомендациям для создания индексов.....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]