powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Насчет целесообразности применения memo-полей…
3 сообщений из 3, страница 1 из 1
Насчет целесообразности применения memo-полей…
    #32925078
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, логика мне кажется очевидной – при разработке структуры БД, в виде memo-полей целесообразно «оформлять» те реквизиты, по которым не предполагается вести индексированный поиск и которые, к тому же, являются достаточно длинными строками нерегулярной (от записи к записи) длины. Это, по-моему, уменьшает объем собственно dbf-ника, в котором и производится индексный поиск, следовательно – скорость поиска должна возрасти за счет уменьшения «переЛопачиваемого» материала.
К примеру, в БД предприятий (состоящей из свободных таблиц; речь веду только об одной из них - главной) – код каждой фирмы и ее краткое наименование размещены в отдельных N- и C-полях соответственно, а описательная часть (регистрационные данные, примечания о текущем состоянии фирмы, ее ликвидации и т.п.) – содержится в memo-поле в виде произвольного текста, по которому никогда не будет необходимости вести поиск.
Но вот недавно обнаружил, что все, а особенно - ПЕРВЫЙ (в текущем сеансе работы с этой БД) поиск происходит медленней, чем в предыдущем варианте структуры БД, когда некоторые из тех реквизитов, которые я теперь «загнал» в описательное memo-поле, содержались в виде отдельных CHARACTER-полей. Странно, ведь объем dbf-ника тогда был почти в 3 раза больше!
Правда, преобразование структуры БД – не единственное изменение, которое я произвел. Были изменены также и запросы, и уменьшено количество «дочерних» таблиц, и еще кое-чего.
Вот теперь прикидываю – чем вызвано замедление поиска: либо неоптимальной разработкой новых вариантов запросов; либо я не совсем прав относительно положительно влияния (на поиск) переноса части описательных данных в memo-поля.
Конечно, в понедельник приду на работу и поэкспериментирую с различными вариантами запросов. А пока – хотелось бы знать, правильно ли я мыслю насчет целесообразности применения memo-полей (см. 1-й абзац) ?
Поделитесь своими мнениями, пожалуйста.
...
Рейтинг: 0 / 0
Насчет целесообразности применения memo-полей…
    #32925082
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиск по индексу производится не в DBF, а собственно в индексном файле (CDX или IDX). ПОСЛЕ того, как ссылка на запись найдена в индексе эта запись "вытягивается" из таблицы.

В момент открытия таблицы (командой USE) физически таблица на клиента не скачивается. Скачивается только несклько байт заголовка.

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

Вообще-то, если есть желание разобраться что и как происходит физически, то поставь себе утилиту FileMon.exe и смотри что и как скачивается с диска. Скачать ее можно здесь

http://www.sysinternals.com/ntw2k/source/filemon.shtml

Насчет memo-полей почитай вложенный файл. Использовать их имеет смысл, если уже есть memo-поля или если длина значения может превышать 254 символа.

Если поле часто модифицируется и его длина не может превышать 254 символа, то стоит использовать поля Character. Из-за особенностей модификации memo-полей при частой их модификации размер файла FPT очень быстро "разбухает" и требует проведения "очистки".
...
Рейтинг: 0 / 0
Насчет целесообразности применения memo-полей…
    #32925338
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To ВладимирМ:
Большое спасибо Вам за подробный ответ и ссылки. Кое-что действительно оказалось несколько сложней, чем я думал. Каюсь, я не все описал в моем вопросе: речь идет только о локальной БД (read only) на одном отдельном компьютере. И кроме того, у меня по умолчанию установлено SET BLOCKSIZE to 0. Сейчас ознакомлюсь с материалом из 2-й ссылки и попытаюсь "восстановить справедливость".
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Насчет целесообразности применения memo-полей…
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]