Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, вопрос по поводу создания-удаления индексов в базе. собственно, это нужно сделать. для это я формирую скрипт drop index... create index... существующие индексы получаются с помощью утилиты dbschema. Возникает ощущение, что не все индексы она вытаскивает. Например, есть таблица (то,что показывает eSQLEditor): ==================================================== DROP TABLE "informix".region_maps; CREATE TABLE "informix".region_maps( firegion_map_id SERIAL NOT NULL, fsregion_map_nm VARCHAR(64) NOT NULL) EXTENT SIZE 16 NEXT SIZE 16 LOCK MODE PAGE; CREATE UNIQUE INDEX "informix".151_1130 ON "informix".region_maps(firegion_map_id); ALTER TABLE "informix".region_maps ADD CONSTRAINT PRIMARY KEY (firegion_map_id) CONSTRAINT "informix".ct_region_maps2; ==================================================== в таблице sysindexes тоже есть запись об этом индексе, где idxname="151_1130". Однако, dbschema -d dbname -t region_maps file дает только такую информацию: ==================================================== create table region_maps ( firegion_map_id serial not null , fsregion_map_nm varchar(64) not null , primary key (firegion_map_id) constraint ct_region_maps2 ) extent size 16 next size 16 lock mode page; ==================================================== И никакого упоминания об индексах.... А надо восстановить поломаные индексы по всей базе. Собственно вопрос: что это за специальные индексы, которые не отлавливает dbschema, и как их получить, раз они-таки нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 13:37 |
|
||
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
ladyirinaЗдравствуйте, вопрос по поводу создания-удаления индексов в базе. собственно, это нужно сделать. для это я формирую скрипт drop index... create index... существующие индексы получаются с помощью утилиты dbschema. Возникает ощущение, что не все индексы она вытаскивает. Например, есть таблица (то,что показывает eSQLEditor): ==================================================== DROP TABLE "informix".region_maps; CREATE TABLE "informix".region_maps( firegion_map_id SERIAL NOT NULL, fsregion_map_nm VARCHAR(64) NOT NULL) EXTENT SIZE 16 NEXT SIZE 16 LOCK MODE PAGE; CREATE UNIQUE INDEX "informix".151_1130 ON "informix".region_maps(firegion_map_id); ALTER TABLE "informix".region_maps ADD CONSTRAINT PRIMARY KEY (firegion_map_id) CONSTRAINT "informix".ct_region_maps2; ==================================================== в таблице sysindexes тоже есть запись об этом индексе, где idxname="151_1130". Ошибка в eSQLEditor, там дофига чего неправильно в DDL показывается (все таки надо было написать что это тест - дурень я). " 151_1130" - это автоиндекс для primary key (firegion_map_id) constraint ct_region_maps2 dbschema все правильно показывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 13:52 |
|
||
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
ladyirina А надо восстановить поломаные индексы по всей базе. Собственно вопрос: что это за специальные индексы, которые не отлавливает dbschema, и как их получить, раз они-таки нужны. А почему их надо пересоздать? Откуда известно что они "поломаные"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 13:57 |
|
||
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
Журавлев ДенисОшибка в eSQLEditor, там дофига чего неправильно в DDL показывается (все таки надо было написать что это тест - дурень я). " 151_1130" - это автоиндекс для primary key (firegion_map_id) constraint ct_region_maps2 dbschema все правильно показывает. автоиндекс? то есть при пересоздании индексов его ручками пересоздавать не надо? а на каком этапе автоиндексы создаются? пересоздавать индексы надо по следующей причине: попытка сделать бэекап нулевого уровня на все базы сервера выдает ISAM error. Попытки запустить oncheck -cI тормозить начинает на одной таблице. Ожидание 40 минут, потом процесс прервали. Или это нормальная ситуация, что так долго? Ну вопрос, что лучше - дождаться, пока отработает oncheck -cI или удалить/создать индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 15:32 |
|
||
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
по поводу автоиндексов еще вопрос: есть база. создали dbshema-ой скрипты drop index/create index, допустим в файлах cr_indx.sql и dr_indx.sql потом, пока база находится в онлайне, запускаем dbaccess dbname < cr_indx.sql; на этом этапе индексы замечательно дропаются. потом пытаемся запустить dbaccess dbname < dr_indx.sql; сервер выдает: ========================= Database selected. 350: Index already exists on column. Error in line 2 Near character position 31 Database closed. ========================= а если помотреть тем же eSQLEditor-ом, то там как раз и видны автоиндексы. то есть получается, что автоиндесы создались, и как мне теперь создать нормальные индексы? в какой момент это происходит? собственно скрипты выглядят так: cr_indx.sql ================================ create unique index ix_region_maps1 on region_maps (firegion_map_id) using btree ; ================================ dr_indx.sql ================================ drop index ix_region_maps1; ================================ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 17:31 |
|
||
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
Т.н. "автоиндексы" это обычные индексы, которые создаются неявно (без оператора create index ) по полям на которые наложено ограничение например primary key. Зачем создавать еще один индекс на этом же поле ? Вот информикс и не дает это сделать. Естественно в dbscheme эти индексы не показываются, поскольку и так из вышесказанного ясно, что информикс сам создаст индексы по полям с primary key. create table t1 ( f1 serial primary key, f2 char) create unique index idx1_t1 on t1 (f1) Получаем : 350: Index already exists on column И теперь вам должно быть понятно, что не стоит создавать индекс по полю, которое затем будете объявлять как primary key (а вы из вашего первого поста, делаете именно так). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2004, 23:13 |
|
||
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
В допонение к вышесказанному добавлю, что сервер сам создает индексы для primary key, уникальных и ссылочных ограничений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 08:46 |
|
||
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
AndronТ.н. "автоиндексы" это обычные индексы, которые создаются неявно (без оператора create index ) по полям на которые наложено ограничение например primary key. Зачем создавать еще один индекс на этом же поле ? Вот информикс и не дает это сделать. Естественно в dbscheme эти индексы не показываются, поскольку и так из вышесказанного ясно, что информикс сам создаст индексы по полям с primary key. create table t1 ( f1 serial primary key, f2 char) create unique index idx1_t1 on t1 (f1) Получаем : 350: Index already exists on column И теперь вам должно быть понятно, что не стоит создавать индекс по полю, которое затем будете объявлять как primary key (а вы из вашего первого поста, делаете именно так). http://groups.google.com/groups?q=autoindex+informix&hl=en&lr=&selm=3DADBA86.6020503%40hotmail.com&rnum=5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 11:17 |
|
||
|
dbschema (drop index->create index)
|
|||
|---|---|---|---|
|
#18+
ladyirinahttp://groups.google.com/groups?q=autoindex+informix&hl=en&lr=&selm=3DADBA86.6020503%40hotmail.com&rnum=5 это про автоиндекс, который строится во время выполнения запроса и потом удаляется индекс, который создается информиксом для поддерживания констрейнт - обычный постоянный индекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 11:37 |
|
||
|
|

start [/forum/topic.php?fid=44&gotonew=1&tid=1609170]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
5ms |
get first new msg: |
5ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 309ms |

| 0 / 0 |
