powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Составной индекс
13 сообщений из 13, страница 1 из 1
Составной индекс
    #39451774
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 2.5. Есть уникальный индекс в таблице по полям "ID_ABONENT,ID_SERVICE,ID_PERIOD". Когда пытаюсь сделать уникальный индекс по полям "ID_ABONENT,ID_PERIOD,ID_SERVICE" (для ускорения выборок по абоненту и периоду), сервер дает отлуп:
Код: plaintext
1.
2.
3.
This operation is not defined for system tables.
unsuccessful metadata update.
Same set of columns cannot be used in more than one PRIMARY KEY and/or UNIQUE constraint definition.

Я согласен, что набор полей тот же самый, но порядок-то другой. Писать в трекер?
...
Рейтинг: 0 / 0
Составной индекс
    #39451777
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

Индекс и ограничение уникальности - не одно и то же.
У тебя уже есть ограничение уникальности по этим трем полям. Ты пытаешься его продублировать, о чем сервер тебе и сообщает.
Порядок полей в ограничении уникальности значения не имеет.

Другой вопрос что для обеспечения работы этой проверки уникальности при этом создается индекс, порядок полей в котором может играть значение при сортировке или при выборке по части полей. Тогда просто создай дополнительный индекс через CREATE INDEX, или пересоздай ограничение уникальности указав иной порядок полей.

Писать в трекер не вижу причины, вроде все логично.
...
Рейтинг: 0 / 0
Составной индекс
    #39451778
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то мне подсказывает, что ты создаешь уникальный констрейнт, а не индекс. На что и получаешь справедливый отлуп. А если бы создавал именно уникальный индекс, то проблемы бы не было.
...
Рейтинг: 0 / 0
Составной индекс
    #39451780
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, надо было создавать индекс, а не ограничение. Заработался. Всем спасибо.
...
Рейтинг: 0 / 0
Составной индекс
    #39451941
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrА если бы создавал именно уникальный индекс, то проблемы бы не было.

А в чем смысл уникального индекса?

Вот построен такой индекс по неуникальному полю. В доке сказано что уникальный индекс не является ограничением уникальности. Т.е. по неуникальному полю или комбинации полей видимо построить можно, но для чего его на практике можно использовать и чем он лучше обычного индекса?
...
Рейтинг: 0 / 0
Составной индекс
    #39451947
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уникальный индекс не является ограничением (constraint) с точки зрения терминологии, но вполне гарантирует уникальность физически. Так что по неуникальному (нуллы не считаем) полю его построить не получится. А лучше обычного (неуникального) он более предсказуемым поведением оптимизатора, не зависящим от возможно устаревшей статистики.
...
Рейтинг: 0 / 0
Составной индекс
    #39451948
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksА в чем смысл уникального индекса?Обеспечивать уникальность. Сюрприз ? :)
fraksВ доке сказано что уникальный индекс не является ограничением уникальности.В том смысле, что на него нельзя ссылаться c помощью FK
...
Рейтинг: 0 / 0
Составной индекс
    #39451958
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad> В том смысле, что на него нельзя ссылаться c помощью FK

На этом их отличия и заканчиваются, AFAIK. :)
Ну и ещё то, что его можно сделать неактивным.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Составной индекс
    #39451961
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

индексы и ограничения - разные объекты.
Некоторые ограничения используют индексы для своей реализации.
Но это не означает знак равенства между ними.
И не гарантирует, что такая реализация никогда не изменится.
...
Рейтинг: 0 / 0
Составной индекс
    #39451964
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так и не понял - есть ли какие-то причины не создавать ограничение уникальности а вместо этого делать уникальный индекс?
Или это только ради некоей совместимости оставлено?
...
Рейтинг: 0 / 0
Составной индекс
    #39451968
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто помню что в BDE для DBF был такой прикол - уникальный индекс создать можно, но ограничением уникальности он не являлся. Соответственно, если используя этот индекс искать некоторую запись то из множества записей с таким значением выдавалась только какая-нибудь одна :)
Потом кажись это дело пофиксили, но к тому времени я уже завязал и с DBF и с BDE.
...
Рейтинг: 0 / 0
Составной индекс
    #39451979
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad> индексы и ограничения - разные объекты.

Это в теории. Я же про практику говорю - на
практике (в конкретной реализации) различий
вроде ровно два (если я ничего не забыл).

> И не гарантирует, что такая реализация никогда не изменится.

Да, разумеется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Составной индекс
    #39451981
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks> Я так и не понял - есть ли какие-то причины
fraks> не создавать ограничение уникальности
fraks> а вместо этого делать уникальный индекс?


Я ж говорю - его деактивировать можно.
Хотя такое редко бывает нужно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Составной индекс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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