Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Индекс для длинной строки / 14 сообщений из 14, страница 1 из 1
06.06.2014, 08:51
    #38663162
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
Есть строковое свойство длиной около 1000 символов.
Вернее, раньше там были короткие записи, а теперь вот появились и длинные. Так уж вышло.
Но система не может записать индекс для этих записей - SUBSCRIPT, говорит.
Это так и задумано? Как обходите, кто сталкивался?
Длинные строки разрешены.
...
Рейтинг: 0 / 0
06.06.2014, 09:23
    #38663182
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
ДокументацияThe optional maxlen argument truncates the converted expression string to the specified number of characters when indexing or collating. For example, if you insert a long string with maxlen truncation, the full string is inserted and can be retrieved by a SELECT statement; the index global for this string is truncated to the specified length. This means that ORDER BY and comparison operations only evaluate the truncated index string. Such truncation is especially useful for indexing on strings that exceed the 255-character limit for Caché subscripts. When converting from non-Caché systems, some users encountered problems when they indexed on a VARCHAR(255) field and then tried to insert data into the table. With the maxlen argument, if you need to index on a long field, you can use the truncation length parameter.
источник Вариант решенияIndex idxs On s As SQLUPPER(100);
Property s As %VarString;
...
Рейтинг: 0 / 0
06.06.2014, 13:10
    #38663512
rstr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
kolesov, если обязательно сохранить полное значение, то может сделать несколько вычисляемых полей?
[s part1=$e(val,1,100)] и т.д. и по ним сделать общий индекс [on part1,part2...]
...
Рейтинг: 0 / 0
06.06.2014, 15:57
    #38663810
Petr0vi4444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
А много ли пользы индексировать строку длиной 1000 символов? Разбить ее на ключевые слова и индексировать их или iFind попробовать.
...
Рейтинг: 0 / 0
06.06.2014, 16:21
    #38663860
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
...
Рейтинг: 0 / 0
06.06.2014, 21:46
    #38664201
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
В генераторе отчетов x.magic сортировка делается по неограниченному числу полей. То есть, формально, таким же способом можно сортировать тексты неограниченной длины и, следовательно, строить по ним индексы))... Практическое применение, конечно, не просто найти...
...
Рейтинг: 0 / 0
07.06.2014, 14:32
    #38664387
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
servitIndex idxs On s As SQLUPPER(100);
Property s As %VarString;
Честно говоря, и %VarString и SQLUPPER выглядят как хреновый диагноз (пару месяцев протянешь, чувак). Практической ценности нет конечно - есть практическая проблема, когда кроме значений свойства типа "Валенок", "Хрень какая-то" и т.п. стали возникать конструкции, состоящие более чем из символов) Я не виноват(
...
Рейтинг: 0 / 0
08.06.2014, 05:22
    #38664553
Petr0vi4444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
kolesov,

Можете привести пример sql запроса с условием по индексируемому полю?
...
Рейтинг: 0 / 0
08.06.2014, 14:15
    #38664617
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
Petr0vi4444kolesov,

Можете привести пример sql запроса с условием по индексируемому полю?
Не понял вопрос. "SELECT ID from Ent where Name [ ?" например. Но у меня не доходит до этого - %Save() не выполняется по SUBSCRIPT.
...
Рейтинг: 0 / 0
08.06.2014, 20:00
    #38664725
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
kolesov, так текущая ситуация какая - ваш вопрос решен ( Index Note On Note As SQLUPPER(255) ) или как обычно?
...
Рейтинг: 0 / 0
09.06.2014, 10:32
    #38665026
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
kolesov ,

Для индексации "неограниченных" строк, а заодно и ускорения поиска, сто́ит попробовать iFind : 15885843 (и далее 15886647 , 15887128 )
...
Рейтинг: 0 / 0
09.06.2014, 12:59
    #38665239
Petr0vi4444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
kolesov,

С таким запросом толку от индекса нет. Все равно выполняется полное сканирование таблицы. Толк будет с условиями = или %STARTSWITH.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.02.2017, 14:04
    #39398163
drakut
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
kolesov, столкнулись с такой же проблемой. По совету Александра Коблова будем пробовать следующее:

Index idxs On s As SQLUPPER(100) [type=bitmap] НЕЖЕЛАТЕЛЬНО Лучше у поля указывать COLLATION и индексы не трогать
...
Рейтинг: 0 / 0
04.02.2017, 18:16
    #39398668
Бредятина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс для длинной строки
kolesov,
Поскольку в любой СУБД есть сортировка по произвольному (теоретически, бесконечному) числу полей, то, значит есть и сортировка текстов произвольной длины, а не только 1000 символов. Работать это будет быстро, потому что на практике процесс будет заканчиваться, в большинстве случаев, на третьем или пятом "поле".
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Индекс для длинной строки / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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