Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Удаление лишних индексов
|
|||
|---|---|---|---|
|
#18+
ASA7 Так уж получилось, что в про процессе развития базы в ней со временем накопились лишние индексы в разных таблицах. Т.е. либо он вообще не нужен, либо по этому полю есть Foreign keys или первичный ключ. Вообщем нужно сделать скрипт, который под Isql удалит ненужные индексы во всей базе. Скрипт нужен т.к. баз одинаковых несколько и на каждой нужно удалить. Возникает вопрос. Как правильно и надежно определить в скрипте наличие индекса с определенным именем по определенной таблице, чтобы потом выдать drop? Знаю про таблицу SYSINDEX и view sysindexes. Видимо нужно по ним запрос делать для проверки наличия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:08 |
|
||
|
Удаление лишних индексов
|
|||
|---|---|---|---|
|
#18+
Подумал опосля. А может вообще не париться, а выдать просто кучу drop Если ругнется, что нет такого индекса, то и ладно - продолжить выполнение. Выполнять, то все равно буду вручную из isql. Но все равно вопрос остается. Решение может пригодиться в других случаях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 14:13 |
|
||
|
Удаление лишних индексов
|
|||
|---|---|---|---|
|
#18+
Не помню насчет семерки, но девятка в окне сервера выдает предупреждения если на таблице есть дублирующиеся индексы (например ручной и ключа). Вообще чтобы получить список всех индексов, достаточно сделать выборку типа такой: Код: plaintext 1. 2. 3. 4. --- http://www.rusug.ru] Портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 18:16 |
|
||
|
Удаление лишних индексов
|
|||
|---|---|---|---|
|
#18+
Просто вытащить список индексов конечно не интересно. Интересно именно удалить ненужные индексы с точки зрения любой абстрактной базы ASA. Мы знаем, что ASA автоматом создает индексы на PK, FK и уникальных колонках. Если я не прав, поправьте. Можно написать примерно следующий скрипт. Цикл по всем таблицам(только пользовательским, системные нам не нужны) Цикл по индексам таблицы(здесь нужно не учитывать индексы созданные ASA по описанным выше правилам) (Если индекс создан на колонке PK или уникальной колонке) Или (Если индекс создан на колонке FK) то удаляем индеск. Конец цикла по индексам Конец цикла по таблицам Запустив такой скрипт на любой базе, мы удалим ненужные индексы. Конечно не все так должно быть просто. Есть еще и составные ключи и индексы(по нескольким колонкам), это тоже надо как-то отследить. Интересует нет ли у кого готового решения или в данном случае не стоит полагаться на готовое решение, а лучше самому аккуратно все просмотреть и оптимизировать? И еще вопрос по индексам к знатокам относительно составных PK и индексов 1) Есть таблица PK состоит из 4 колонок с1,с2,с3,с4 2) все запросы с данной таблицей(кроме вставки конечно) работают с where c1=? and c2=? или where c3=? and c4=? Нужно ли создавать индексы i1(c1,c2) и i2(c3,c4)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 11:39 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=73&tid=2012429]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 373ms |

| 0 / 0 |
