|
|
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
Проблема - есть две базы и хранимая процедура, которая копирует данные из одной таблицы первой базы в другую таблицу(соответственно другой базы), в execution plan видно что основные ресурсы жрет table scan (для таблицы из которой копируются данные) поскольку у таблицы около 3 млн. строк, то напрашивается сделать индексы на таблицу. Вопрос1 - вообще эффективны ли будут в данном случае индексы. Вопрос2 - таблица представляет собой статистику пользования интернетом(лог из ISA Server- пользователь , имя,ip, время , дата, программа и т.д.), по какому столбцу лучше проводить индексирование? Зарание признателен за любые мысли и советы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 17:13:58 |
|
||
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
в запросе используется объединение таблиц ? есть ли условие where ? order by ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 17:16:32 |
|
||
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
если копируеш за диапазон дат то на столбец даты..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 17:17:46 |
|
||
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
Вкратце - индексировать нужно те столбцы, которые учавствуют в предложении WHERE запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 17:18:50 |
|
||
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
Вот моя процедура-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 Может быть кто еще что посоветует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 17:57:01 |
|
||
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
Logdate сделай кластерным индексом, тогда не будет сканирования всей таблицы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 18:11:31 |
|
||
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
Вообще то я знаю что поля типа datetime (а именно такое поле logdate)не рекомендуется делать индексом ...может кто-либо пояснит?(информация с сайта Открытых Систем)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2002, 18:15:26 |
|
||
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
могу тебе пояснить. У тебя дело в том, что используя вышеописанный запрос ты можешь избавиться от сканирования таблицы только так! Иначе, даже в случае создания некластерного индекса по полю logdate, в случае когда интервал logdate>=@d1 and logdate<=@d2 окажется слишком велик, оптимизатор будет использовать сканирование таблицы. А вообще мой те совет, когда стоит проблема выбора индексов, то необходима серия тестов и замеры по быстродействию, также нелишним будет оценка эффективности каждого индекса путем вычисления коэффициента избирательности и плотности индекса. Вобщем без этого трудно дать однозначный совет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2002, 13:57:18 |
|
||
|
Вопрос по рекомендациям для создания индексов.....
|
|||
|---|---|---|---|
|
#18+
Есть такая вещь (начиная с MS SQL7) - Index Tuning Wizard. Помогает создать необходимые индексы для наиболее часто применяемых SQL запросов. В качестве источника информации (для анализа) необходимо иметь Trace файл или просто выделить в Query Analyser нужные запросы и запустить мастера (для QA2000 - комбинация клавиш Ctrl+I). Потом указываешь предпочтительные опции и он выдает список рекомендуемых индексов. При необходимости - можно и создать их сразу. Качество рекомендаций таково, что позволяет повысить производительность запросов на порядок (естественно, если ты не занимался оптимизацией БД сам). Но необходимо учесть, что: - после создания рекомендуемых индексов необходимо запустить мастера еще раз, чтобы убедиться, что весь потенциал исчерпан (часто при повторном запуске мастер "находит" еще пару индексов, которые могут повлиять на быстродействие) - слишком много индексов замедлят операции обновления/вставки записей (подумать тоже придется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2002, 16:01:46 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1820976]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 196ms |
| total: | 338ms |

| 0 / 0 |
