powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ограничение при создании индекса (Firebird 1.5)
24 сообщений из 24, страница 1 из 1
Ограничение при создании индекса (Firebird 1.5)
    #38901408
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 1.5 не позволяет создать индекс на поле VARCHAR(255) из-за превышения размера ключа. Размер поля уменьшать нельзя. В таблице порядка 10000 записей, из них у не более 0.25% записей это поле заполнено. К таблице будут запросы, предложение WHERE которых содержит условие на данное поле.
Можно ли в этом случае обойтись без индекса? Или нужно искать обходные пути для индексирования?
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901413
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

Заполнено 10000*0.25/100=25 записей? круто
предлагаю для начала забить на индекс
можно еще эти данные выносить в отдельную таблицу
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901422
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Interloper!
You wrote on 11 марта 2015 г. 14:57:15:

Interloper> FB 1.5 не позволяет создать индекс на поле
VARCHAR(255)позволяет

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901443
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийHello, Interloper!
You wrote on 11 марта 2015 г. 14:57:15:

Interloper> FB 1.5 не позволяет создать индекс на поле
VARCHAR(255)позволяет


Нет, выдает ошибку "key size too big for index".
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901449
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Interloper!
You wrote on 11 марта 2015 г. 15:05:11:

Interloperkey size too big for index
да, забыл что в 1.5 это не зависит от размера страницы.
максимально возможный - VARCHAR(252)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901491
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может ли Firebird быстро отсеивать записи, у которых значение поля равно NULL, в случае, когда предложение WHERE определяет записи, у которых значение поля не равно NULL?
Почти уверен, что не может, но на всякий случай уточню.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901499
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точно так же как и оракл
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901502
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper,

мда. попробую догадаться.

без индекса поиск where по столбцу вынужден перебирать все записи, потому что неизвестно, что в конкретном столбце находится - null или какое-то другое значение. И в этом плане null - это всего лишь одно из возможных значений данного столбца.
Способ "быстро отсеять" - это построить индекс и использовать его. Другие способы - из области фантастики.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901510
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvInterloper,

мда. попробую догадаться.

без индекса поиск where по столбцу вынужден перебирать все записи, потому что неизвестно, что в конкретном столбце находится - null или какое-то другое значение. И в этом плане null - это всего лишь одно из возможных значений данного столбца.
Способ "быстро отсеять" - это построить индекс и использовать его. Другие способы - из области фантастики.

есть еще колдунство - вынести искомое поле в отдельную табличку. будет поиск по жалким долям процента и джойн по первичному ключу.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901522
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvInterloper,

мда. попробую догадаться.

без индекса поиск where по столбцу вынужден перебирать все записи, потому что неизвестно, что в конкретном столбце находится - null или какое-то другое значение. И в этом плане null - это всего лишь одно из возможных значений данного столбца.
Способ "быстро отсеять" - это построить индекс и использовать его. Другие способы - из области фантастики.
А что если бы сервер создавал что-то типа битовой карты, в которой бы хранил признак NULL/заполнено для поля? В теории тогда такое отсеивание было бы возможным независимо от создания индекса.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901527
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorесть еще колдунство - вынести искомое поле в отдельную табличку.
да, была у нас одна система. Где-то около 600 тысяч юзерских аккаунтов, из которых регистрировались только 30%, т.е. 60% имен юзеров были null.
А табличка была здоровенная, где-то около 50 столбцов со всякими "город, улица, возраст...". И при обсчете регистрированных пользователей все это начинало конкретно тормозить.
Сделали доп. таблицу, куда вынесли всего 5-6 столбцов. Плюс триггеры, которые при заполнении имени юзера копировали эту запись из основной в эту доп. таблицу.
Во всех пересчетах поменяли основную таблицу на дополнительную. И, о чудо! Пересчеты ускорились более чем в 10 раз (не помню точно, но не меньше).
1. количество обрабатываемых записей сократилось на 60%, что дало сильный прирост в join
2. объем обрабатываемой информации сократился не менее чем раз в 10, т.к. в таблице было всего 5-6 столбцов.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901530
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperА что если бы сервер создавал что-то типа битовой карты, в которой бы хранил признак NULL/заполнено для поля?
это и есть "нечто вроде индекса".
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901539
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создай доп.поле.
в него пиши триггером по insert и update.
какой-нить свой признак NULL/NOT NULL.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901547
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийсоздай доп.поле.
в него пиши триггером по insert и update.
какой-нить свой признак NULL/NOT NULL.

Да, такая мысль у меня тоже возникла. Так и сделаю, если без индекса будет тормозить.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901550
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloperиз них у не более 0.25% записей это поле заполнено.выносить в пристыкованную табличку.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901564
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloperесли без индекса будет тормозить.
на 10 тысячах записей будет тормозить или если запрос написан суперкриво, или если в запросе объединяются хотя бы 10 таблиц такого же размера.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901587
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperVARCHAR(255)
....уменьшать нельзя.
Число 255 однозначно намекает, что размер поля был выбран от балды. В таких условиях
"менять нельзя" - простая прихоть идиота.

Interloperесли бы сервер
1.5 - окаменевшее дерьмо дохлого мамонта. К нему "бы" неприменимо в принципе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38901998
Interloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInterloperVARCHAR(255)
....уменьшать нельзя.
Число 255 однозначно намекает, что размер поля был выбран от балды. В таких условиях
"менять нельзя" - простая прихоть идиота.

То, что 255=2^8-1, конечно же, абсолютно случайно!
Есть определенные корпоративные стандарты, а не прихоть идиота.
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38902176
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящиймаксимально возможный - VARCHAR(252)InterloperЕсть определенные корпоративные стандарты, а не прихоть идиота.откусть ТРИ (!!!) жалких символа от "стандарта" и не конопатить мозги?
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38902196
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperЕсть определенные корпоративные стандарты, а не прихоть идиота.
корпоративные стандарты, конечно, хорошо, но про ограничение на индексируемое поле в 252 символа известно еще с конца 90х, у меня даже на сайте хранится древнее письмо Карвина
http://www.ibase.ru/mail/idx_size.txt
не говоря о том, что пресловутые 252 символа указаны здесь
http://www.ibase.ru/devinfo/charvar.htm
и здесь
http://www.ibase.ru/devinfo/ibrusfaq.htm
и в туче других мест.

а про то, что это ограничение снято в ФБ 2.0, и теперь есть ограничение на 1/4 страницы, об этом известно с 2006 года.

В общем, как ни крути, но ....
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38902203
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterloperЕсть определенные корпоративные стандарты
И чем обоснован стандарт на 255 символов, кроме того, что это 2^8-1? Почему именно 255, а
не 256? Почему не 252?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38902205
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Interloper> Есть определенные корпоративные стандарты, а не прихоть идиота.
А почему бы корпоративным стандартам не перейти на 2.0.7 или даже на 2.1.7?..
Не говоря уже про 2.5.3...

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38902210
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Zirra!
You wrote on 12 марта 2015 г. 11:44:02:

Zirra> А почему бы корпоративным стандартам не перейти на 2.0.7
> или даже на 2.1.7?..
> Не говоря уже про 2.5.3...
в ожидании пенсии любое телодвижение представляется крамолой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Ограничение при создании индекса (Firebird 1.5)
    #38902278
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInterloperЕсть определенные корпоративные стандарты
И чем обоснован стандарт на 255 символов, кроме того, что это 2^8-1? Почему именно 255, а
не 256? Почему не 252?


Ну дык в старом добром Turbo Pascal было ограничение на строку в 255 символов. Отсюда ноги и растут...
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ограничение при создании индекса (Firebird 1.5)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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