:: Visual Foxpro, Foxpro for DOS
Re: Индекс типа Binary
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Возможно у тебя был "оптимизирован SELECT" - т.е. просто на базовую таблицу
наложен соответствующий SET FILTER - потому и из dbf-а ничего не читалось
добавь NOFILTER к запросу.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Вскрытие показало
Владимир Максимов
Автор

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
Первые результата вскрытия индекса типа Binary

В листах нет значения ключа (.T. или .F.)

В листах нет адреса записи таблицы. Просто порядковый номер бита соответствует порядковому номеру записи таблицы.

Если в бите соответствующей записи записана 1, то значение ключа для этой записи принимает значение .T., если 0 - .F.

Видимо, еще учитывается нулевая запись, поскольку адресация на первом листе начинается со 2 бита.

На один лист размером 512 байт ВСЕГДА помещается 3968 бита (на первом листе 3967) или значений ключа 3968 записей (496 байт)

При превышении предельно допустимого количества на первом листе добавлется дополнительно 2 листа. Далее по мере заполнения очередного листа доавляется по одному листу. Таким образом, если количество записей больше чем 3967 записей, то всегда будет один дополнительный незаполненный лист.

Т.е. для индексации предельно допустимого количества записей в 1,000,000,000 потребуется

1,000,000,000 / 3,968 + 1 = 252,018 листов
252,018 * 512 = 129,033,216 байт

Для "стандартного" индекса количество ключей на одном "листе" зависит от общего количества записей и длины индексного выражения. Но в любом случае на адрес записи отводится от 1 до 4 байт

Если примерно подсчитать размер аналогичного индекса Regular (по логическому выражению), то на одном листе будет записано:

(512-24-2)/4 = 121 адресов записей, т.е. потребуется примерно в 33 раза больший объем (3,968 / 121 = 33)

Если количество записей меньше, то и разрыв будет меньше, но в любом случае не менее чем в 8 раз (адрес записи в индексе Regular не может занимать меньше 1 байта или 8 бит)




------------------
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика