Akina |
Дата 2.10.2014, 11:40 (ссылка)
| (нет голосов)
Загрузка ...
|
|
|
Советчик
Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград
Репутация: 1 Всего: 453
|
Цитата | INDEX <ключ. выр> TO <имя файла>/(<вырС>)
Аргументы:
<ключ. выр.> выражение для каждой записи базы данных помещаемое как значение ключа в индексный файл. Максимальная длина индексного ключевого выражения 250 символов.
<имя файла> имя создаваемого индексного файла, обычно, с расширением (.ntx ). Однако, если вы скомпануете программу с модулем NDX.OBJ то для того чтобы использовать совместимые с dBASE III PLUS индексные файлы, у них будет расширение (.ndx ).
Применение:
При использовании индексного файла записи базы данных появляются в порядке следования ключевых выражений для этих записей. Физический порядок следования записей в базе данных не изменяется. Это позволяет вам создавать и поддерживать много логических порядков следования записей в базе данных.
Clipper применяет вариант схемы В деревьев для индексации записей с индексной страницей в 1024 байт. Файл .ntx содержит указатель индексов, сообщающий системе какое индексное выражение применяется, где " вершина дерева " и т.д. К тому же, Clipper имеет указатель на место в файле, где находится страница, обрабатываемая последней. Как только вы модифицируйте ключевое выражение, старый ключ будет заменен на новое значение. Иногда страницы становятся пустыми. Когда это случается Clipper запоминает указатель в блоке управления, что позволяет ему использовать снова это место, если возникает необходимость создания страницы.
Записи, помеченные для уничтожения и отфильтрованные тоже включаются в индексный файл.
Индексирование по дате: Clipper поддерживает индексацию по дате для обоих типов индексных файлов (.ntx ) и (.ndx ). Для ключевого выражения, содержащего дату, как часть всего выражения, создавайте строковые выражения с помощью функции DTOS() для перевода даты в символьную строку. Например:
USE Invoices INDEX ON Customer + DTOS(Inv_data) TO Invoice
Индексирование по убыванию: Для создания индекса по убыванию или убывающего подмножества можно использовать функцию DESCEND(). Эта функция принимает как аргумент данные любого типа и возвращает значение наоборот. Например, этот фрагмент программы создает индексный файл счетов в убывающем фронологическом порядке:
USE Invoices INDEX ON Customer+DESCEND(DTOS(Inv_data)) TO Inv_stack
Помните о необходимости применения во время выполнения последовательного поиска функции DESCEND() как части выражения для команды SEEK.
Совместимость индексных файлов: Clipper поддерживает создание уникальных индексов по команде SET UNIQUE. Когда указано UNIQUE ON, Clipper добавляет только уникальные индексы в создаваемый индексный файл. Помните, однако, что команда UNIQUE является не только атрибутом индексного файла, но и относится к выполнению других команд. Это значит, что когда установлено UNIQUE OFF, то все ключи (не только уникальные ) будут добавлены к индексам, даже если индексный файл создавался в режиме UNIQUE ON. И, наоборот, когда установлено UNIQUE ON, то в открытых индексных файлах исправляются не только уникальные ключи.
Функция TRIM() в ключевом выражени: Размер индексного ключа в Clipper вычисляется по оценке ключевого выражения для пустой записи. Поэтому функция TRIM() в любой части ключевого выражения, содержащего поля, всегда оценивается как нулевая строка. Это может привести к несоответствию размеров между желаемой и определяемой длиной ключа. Однако, вы можете построить индексный ключ, используя функцию TRIM() для полей, чтобы убрать лишние пробелы до размера ключа, равного длине приводимого в порядок поля. Например, пусть вы имеете два поля с именами Last и Fist длиной в 20 символов. Вы хотите проиндексировать по следующему выражению:
TRIM(Last) + First
Действительное же выражение для INDEX ON будет таким:
SUBSTR(TRIM(Last) + First + SPACE(20), 1, 40 )
Помните, TRIM() в индексных файлах не экономит место. Clipper распределяет место для ключей фиксированного пририщения и использование функции TRIM() только производит беспорядок. Чтобы создать меньшие по размеру индексные файлы, использейте меньший размер ключа, используя функцию SUBSTR().
Примеры: ? TYPE("Branch") INDEX ON Branch TO Branch * ? TYPE("Amount") INDEX ON Amount TO Amount * TYPE("Date") INDEX ON Date TO Date
|
--------------------
О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.
|
|
|
|