Re: Индекс типа Binary | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Возможно у тебя был "оптимизирован SELECT" - т.е. просто на базовую таблицу
наложен соответствующий SET FILTER - потому и из dbf-а ничего не читалось добавь NOFILTER к запросу. ------------------ WBR, Igor |
Вскрытие показало | |
---|---|
Владимир Максимов Автор Сообщений: 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 бит) ------------------ |
© 2000-2024 Fox Club  |