Вопрос № 59447: Сталкивались ли вы с такой проблемой? В базе данных InterBase создано поле VARCHAR(500). При определенном количестве символов (~300-400) в этом поле во время выполнения запроса возникает ошибка. Запрос такого рода (select ... group by <это поле>...
Вопрос № 59.447
Сталкивались ли вы с такой проблемой? В базе данных InterBase создано поле VARCHAR(500). При определенном количестве символов (~300-400) в этом поле во время выполнения запроса возникает ошибка. Запрос такого рода (select ... group by <это поле>), то есть при группировке по этому полю. Ошибка: потеря соединения с сервером InterBase. Подскажите есть ли ограничения по размеру поля, по которому производиться группировка. Связано ли это с тем, что при количестве символов > 255 поле не индексируется. (хотя
256 символов работают - проверял). Заранее спасибо...
Отправлен: 19.10.2006, 10:05
Вопрос задал: Kotsa (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Kotsa!
Скорее всего это ошибка построения индекса по group by
предельный размер индекса зависит от нескольких факторов для одиночного поля и 1-байтной кодировки этот размер 256-12=244 символов. Более точно в конкретном случае определяется опытом. Просто определи поле и построй индекс в случае ошибки уменьши размер поля. В предыдущих версиях этот размер равен 176 символов.
В случае нескольких полей все сложнее. Лучше тестировать.
--------- Если дело заслуживает быть сделаным, то оно заслуживает чтобы его сделали ХОРОШО
Отвечает: sir henry
Здравствуйте, Kotsa!
До версии 2.0 длина любого индекса не должна была превышать 252 байта. В версии 2.0 это ограничение убрали, теперь размер индекса зависит от размера страницы. Однако сами понимаете, что чем больше размер индекса, тем больше замедляется работа с данными. Group by использует индекс, если он есть по этому полю. Выводы делайте сами. :)
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 19.10.2006, 10:49
Отвечает: Viktor_sh
Здравствуйте, Kotsa!
В своих базах, я стараюсь поля VARCHAR не делать больше 255 символов, если больше использую BLOB. Попробуйте перестроить базу, если это возможно.
Ответ отправил: Viktor_sh (статус: 1-ый класс)
Ответ отправлен: 19.10.2006, 19:57