Эта ошибка генерируется перед усечением индексного ключа, как правило в процессе создания или модификации индекса , например командой INDEX . Это может случиться при использовании ключа, который содержит выражение, использующее Memo-поле, длина которого не фиксирована, как в следующем примере:

INDEX ON charfld1 + memofld1 TAG mytag

Индексный файл с усеченными индексными ключами - источник потенциально неправильных результатов. Visual FoxPro не разрешает усечение ключа в процессе создания или модификации индекса. Об ошибке сообщается перед тем как должно произойти усечение ключа. Если Вы желаете укоротить ключ, Вы должны скорректировать индексное выражение для явного укорочения ключа.

Из-за проблем, связанных с усечением ключа, механизм SQL (как в процессе выполнения команды SQL SELECT или при создании Представления) может быть не в состоянии сформировать временный индекс, чтобы оптимизировать оценку соединения, в том случае, если он неспособен точно определить максимальный размер ключа. Это может привести к вычислению соединения как декартова произведения, что в результате может влиять на быстродействие. Чтобы дать возможность диагностировать эту проблему, добавлено сообщение в SQL ShowPlan, которое управляется функцией SYS(3054) . Когда значение этой функции больше или равно 11, в ShowPlan добавляется сообщение "Ошибка формирования временного индекса" чтобы указать на проблему усечения ключа. Вы можете устранить эту проблему, регулируя условия соединения для явного задания размера ключа и успешного формирования временного индекса.

Иногда, механизм SQL будет формировать временный составной индекс (это - специальный индекс, создаваемый самой программой и не обеспечиваемый через команду INDEX). В этом случае, некоторые части индекса могут вызвать укорочение ключа, в то время как другие не приведут к этому. При первой попытке формировать индекс, те части, которые вызывают проблемы, будут идентифицироваться. Затем эти проблемные части удаляются из ключа и индекс формируется заново. SQL ShowPlan укажет на эту проблему, однако остается возможность, что соединение может быть все еще оптимизировано с использованием только допустимых частей.

См. Также