Поиск и упорядочение информации в БД
Фильтрация данных SET FILTER TO <условие> - установка FOR - условия для всех последующих команд обработки данных SET FILTER TO - отмена ранее поставленных условий USE STUDENTS SET FILTER TO Group=21402 BROWSE Команда действует исключительно на активную БД. Последовательный поиск LOCATE FOR<условие> [<границы>] [WHILE<условие>] - в случае успешного поиска указатель записей устанавливается на найденную запись, функция FOUND() = .T. При неудачном поиске RECNO() = RECCOUNT()+1, FOUND() = .F., EOF() = .T. CONTINUE - продолжение поиска LOOKUP(<поле1>,<выражение>,<поле2>) - ищет первое вхождение искомого значения. Сортировка записей Сортировка записей - выполняется путём создания новой БД, в которой физическое размещение записей соответствует заданному принципу. По умолчанию числовые поля упорядочиваются по возрастанию, даты - в хронологическом порядке, строки - по алфавиту, логические - .F., .T.. SORT ON <поле1[ключ]>, <поле1[ключ]>, [<поле2[ключ]>,….] TO <Имя_новой_БД> [<границы>] [<условия>] Элемент списка полей может иметь ключ /A - сортировка по возрастанию, /D - сортировка по убыванию, /C - сортировка символьного поля без учёта регистра. Первое поле в списке считается главным. Упорядоченность по главному полю - глобальная, по остальным - локальная, в пределах подмножества записей. Индексирование баз данных Индексирование баз данных - механизм ускоренного поиска данных. (Подробнее про индексирование смотрите здесь). Для индексирования создаются индексные файлы. Размер индексного файла сравним с объёмом дискового пространства, занимаемого полем БД, по которому было проведено индексирование. Типы индексных файлов: 1) Одноиндексные “IDX” - компактные и обычные. 2) Мультииндексные “CDX” - всегда компактные: a) Структурные (имя совпадает с именем БД) b) Обычные (произвольное имя) Тэг - отдельный ключ в мультииндексном файле. Структурный индексный файл всегда открыт для своей БД и не указывается в списке индексов. Один из открытых IDX -файлов задаёт ведущий индекс, которого может и не быть. Приоритеты (если не указано особо): “IDX”, структурный, “CDX”. Команда индексирования (создание индексного файла): INDEX ON <выражение> TO <IDX-файл> [FOR<условие>] [COMPACT] [DESCENDING] [UNIQUE] [ADDITIVE] INDEX ON <выражение> TAG <имя_тега структурного CDX-файла> [FOR<условие>] [COMPACT] [DESCENDING] [UNIQUE] [ADDITIVE] INDEX ON <выражение> TAG <имя_тега> OF <CDX-файл> [FOR<условие>] [COMPACT] [DESCENDING] [UNIQUE] [ADDITIVE] <выражение> - обычно имя поля, по которому
идёт индексирование, либо несколько полей, также может быть функцией, в
том числе пользовательской.
Открытие индекса. USE <DBF-файл> [INDEX <список индексных файлов> [ORDER<ведущий индекс>] [ASCENDING|DESCENDING]] - используется для открытия БД вместе с индексными файлами. Если не используется ORDER, то первый в списке индекс становится ведущим (главным). <N> - номер среди IDX - файлов или тэгов
<ведущий индекс> - явно задаёт номер главного
индексного файла среди перечисленных в списке. Указание ORDER без
аргумента или задание N=0 означает, что ведущий индекс не будет назначен.
Нумерация индексов ведётся с 1, нумерация «сквозная» для всех индексных
файлов.
SET INDEX TO [<список
индексных файлов> [ORDER<ведущий индекс>] [ASCENDING|DESCENDING] [ADDITIVE]]
- открывает индексные файлы для активной БД. Параметры те же.
COPY TAG <имя_тэга>[OF <имя_CDX-файла>] TO <имя_IDX-файла> - снимает копию тэга в виде IDX-файла. CLOSE INDEX - аналогична
SET INDEX TO.
Поиск и обработка данных с использованием индексов SEEK<выражение> - быстрый поиск по ведущему индексу. По этой команде будет найдена первая в БД запись, удовлетворяющая выражению. Если поиск удачен функция RECNO() выдаст номер соответствующей записи, а функция FOUND() принимает значение .T.. Существует модификация функции указания номера записи: RECNO(0), которая в случае неудачного поиска возвращает номер записи имеющий самое близкое значение к ключу. Функция SEEK (<выражение>[,<область>])
- выполняет поиск записи в индексном файле и устанавливает на неё указатель,
возвращая .T. , если поиск удачен, и .F. в противном случае.
|