On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 30.05.11 00:54. Заголовок: фильтрование базы с большим количеством записей


clipper 5.01
есть база следующей структуры:
id n 7
name character 42
В этой базе более миллиона записей, name не повторяется.
В get поле вводится несколько символов, потом после нажатия какой то комбинации клавиш выводится только та часть записей базы, в которых первые символы поля name совпадают с введенными в поле get. Так вот если применить set filter to. то фильтрация продолжается очень продолжительное время и поэтому для базы с большим количеством записей не подходит. Даже если дождаться и начать двигаться по записям, то переход от записи к записи не замедляется, так как база отсортирована по name. но когда с первой отображенной записи шагнуть выше или после последней отображенной шагнуть вниз - снова большая задержка. Причина задержек мне понятна. Вопрос: чем заменить set filter to? Переписывать нужные записи в массив тоже не подойдет, так как при небольшом количестве введенных символов в get поле количество записей, подходящих под критерий выборки может превысить максимальный размер массива.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 53 , стр: 1 2 3 All [только новые]





Пост N: 46
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 03.06.11 14:07. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:

Переход на клиппер версии выше 5.01 нежелателен ...


Попробуйте тогда вариант типа:
INDEX ON PADR(Name, 20) TO TAG_1 UNIQUE
INDEX ON Name TO TAG_2
и фильтруйте по уникалиному с переключением на полный ...
А переходить совершенно не проблема, на днях Summer перегнал (prg 200K), только строчку
Func Main() добавил



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 15
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 03.06.11 18:02. Заголовок: SergejKis пишет: По..


SergejKis пишет:

 цитата:
Попробуйте тогда вариант типа:
INDEX ON PADR(Name, 20) TO TAG_1 UNIQUE
INDEX ON Name TO TAG_2
и фильтруйте по уникалиному с переключением на полный ...


UNIQUE ни к чему, так как справочники ведутся не пользователем, а обновляются с центра и повторяющихся Name нет. Но если бы и были, то может это как бы то ускорило время открытия справочника, но никак бы не повлияло на тормоза, возникающие при нажатии клавиши, которая курсор пытается переместить на запись, не удовлетворяющую условию фильтра.

SergejKis пишет:

 цитата:
А переходить совершенно не проблема, на днях Summer перегнал (prg 200K), только строчку
Func Main() добавил


Ну это же не переход. Это перекомпиляция имеющегося prg файла. Я под переходом понимаю использование тех функций(команд, ...) харбора, которых нет в клиппер 5.01. И вот здесь как раз для меня и есть проблема - отсутствие русской документации. Поэтому допишу на клиппер 5.01. Может попробую создавать временную базу, в которой будут только те записи, которые удовлетворяют фильтру, может еще как-то по другому. Да и я уже писал, что справочник фамилий взял только в качестве примера. Никто не будет открывать этот отфильтрованный справочник, поскольку ввести надо до десятка букв, а в справочнике будет сотни фамилий, удовлетворяющих фильтру. И только после того, как программа будет написана и протестирована, только после этого начну переводить на харбор.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1965
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 03.06.11 19:52. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
Ну это же не переход. Это перекомпиляция имеющегося prg файла. Я под переходом понимаю использование тех функций(команд, ...) харбора, которых нет в клиппер 5.01.



Вы можете собрать свою программу харбором, и добавить несколько строк для фильтра по scope, чем и решите свою проблему. Этот и будет использование функций, которых нет в 5.01


 цитата:
И только после того, как программа будет написана и протестирована, только после этого начну переводить на харбор.



Это хорошо, что вы увидели магистральный путь. А незнания английского не бойтесь, это не будет большим препятствием

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 16
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 03.06.11 20:44. Заголовок: Pasha пишет: Вы мож..


Pasha пишет:

 цитата:
Вы можете собрать свою программу харбором, и добавить несколько строк для фильтра по scope, чем и решите свою проблему. Этот и будет использование функций, которых нет в 5.01


и добавив пару функций в недописанную программу, закрыть навсегда возврат к клипперу. И даже если программа дописана, завтра в связи с изменением законодательства или по иным причинам, в нее будет необходимо вносить изменения. А я привык писать так: изменил что-то, посмотрел как работает. Есть оболочка, в которой нажав только Ctrl+F9 и автоматически создастся экзешник и запустится. Что то не-так, здесь же и поправил и снова Ctrl+F9

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1966
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 03.06.11 21:31. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
закрыть навсегда возврат к клипперу



И не надо.
Но возврат возможен
Пишем:

#ifdef __HARBOUR__
// фильтр по scope
#endif

Собираем клиппером - работает мееееедленно
Собираем харбором - работает мгновенно


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 52
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.06.11 22:12. Заголовок: давно пора....


SergeyKorotun пишет::

 цитата:
закрыть навсегда возврат к клипперу.



Сергей, может выложите исходники куда ( можно тестовый пример ) и вам его в конфе соберут харбуром. Оцените живьем работу, может тогда что-то и поменяется ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 198
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 04.06.11 11:23. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
и добавив пару функций в недописанную программу, закрыть навсегда возврат к клипперу. И даже если программа дописана, завтра в связи с изменением законодательства или по иным причинам, в нее будет необходимо вносить изменения. А я привык писать так: изменил что-то, посмотрел как работает. Есть оболочка, в которой нажав только Ctrl+F9 и автоматически создастся экзешник и запустится. Что то не-так, здесь же и поправил и снова Ctrl+F9


Что-то я вас не пойму , просите о помощи и сами же отказываетесь от нее и от идей данных на форуме. Из последнего поста следует, что только с помощью клиппера легко внести изменения в разных случаях и с помощью какой-то оболочки с Ctrl+F9. Я думаю Вам форум не поможет пока Вы не определитесь сами что Вам нужно. А пока пусть работает оф. прога на фоксе.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 18
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 04.06.11 12:23. Заголовок: AlexMyr пишет: Что-..


AlexMyr пишет:

 цитата:
Что-то я вас не пойму , просите о помощи и сами же отказываетесь от нее и от идей данных на форуме. Из последнего поста следует, что только с помощью клиппера легко внести изменения в разных случаях и с помощью какой-то оболочки с Ctrl+F9. Я думаю Вам форум не поможет пока Вы не определитесь сами что Вам нужно. А пока пусть работает оф. прога на фоксе.


Цель как можно быстрее написать программу. А это можно реализовать только на языке, на котором был опыт (паскаль, клиппер, парадокс), хотя и десятилетней давности. Пусть немного будет медленнее работать, пусть не будет вызываться какой то справочник из полей, где надо ввести небольшое количество символов (но будет контроль на наличие введенного в справочнике), но запустить программу надо как можно скорее. После этого, поверьте, каждый ответ буду пытаться внедрить, усовершенствуя программу.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 199
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 04.06.11 13:40. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
Цель как можно быстрее написать программу.



С того момента как
SergeyKorotun пишет:

 цитата:
Отправлено: 30.05.11 01:54. Заголовок: фильтрование базы с большим количеством записей


уже можно было на харборе написать основу и с помощью форума освоить ordscope, а с другой стороны есть онлайн переводчик или на худой конец англо-русский словарь. А с третей стороны Вы говорите, что
SergeyKorotun пишет:

 цитата:
Если б вы предложили делать, ну например, на оракле, возможно б и начал изучать с нуля


и Вы думаете, что оракл при наличии русской доки освоить легче чем клиппер=харбор?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 21
Зарегистрирован: 30.05.11
ссылка на сообщение  Отправлено: 04.06.11 13:58. Заголовок: Переход на клиппер в..


Переход на клиппер выше 5.01 не планировал, так как язык умирающий, а надо написать только несколько программ. Про существования харбор первый раз услышал на этом форуме. Написал первый вопрос даже не надеясь на ответ, думал клипперистов уже не осталось. Оказывается заблуждался.
Принято решение (обжалованию не подлежит):
1. Дописать программу все же на клиппер 5.01
2. Сразу после завершения освоить новые возможности клиппер 5.03 (все же не стоит забрасывать то, на чем можешь что-то сделать)
3. Перейти на Харбор и перевести на него уже написанные программы, усовершенствовав их.
4. Одновременно с пунктами 2 и 3 осваивать оракл. Основные программы у нас написаны на оракле. Но в нашем округе никто даже не может составить простенький запрос к базе данных.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 202
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 04.06.11 14:18. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет:

 цитата:
. Дописать программу все же на клиппер 5.01
2. Сразу после завершения освоить новые возможности клиппер 5.03 (все же не стоит забрасывать то, на чем можешь что-то сделать)
3. Перейти на Харбор и перевести на него уже написанные программы, усовершенствовав их.



Еще раз клиппер=харбор, потому еща раз харбор, иначе никакого конструктива.

SergeyKorotun пишет:

 цитата:
4. Одновременно с пунктами 2 и 3 осваивать оракл. Основные программы у нас написаны на оракле. Но в нашем округе никто даже не может составить простенький запрос к базе данных.


Про оракл и запросы на оракле в другом форуме.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 53
Зарегистрирован: 13.09.07
ссылка на сообщение  Отправлено: 04.06.11 18:25. Заголовок: Andrey Я не ..


Andrey

Я не делал замеров, но работая с большими обьемами не заметил особого увеличения в скорости.
Тем более, как вы говорили, на порядок(уж это я точно бы почувствовал!). Ну а c фоксом
( с его технологией рашмор) Harbour вообще сложно тягаться. Но я все равно предпочитаю
Harbour в первую очередь за то, что это открытая и постоянно развивающаяся система.
А Visual Foxpro Microsoft, к сожалению, уже похоронила.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 47
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 05.06.11 07:23. Заголовок: SergeyKorotun пишет:..


SergeyKorotun пишет::

 цитата:

UNIQUE ни к чему, так как справочники ведутся не пользователем, а обновляются с центра и повторяющихся Name нет
и
Дописать программу все же на клиппер 5.01


Уникальный индекс я предложил на первые 20 байт от cName.
На S87 и PC 286 (база до 500000 записей) такая задача была решена следующим образом:
создано 3 уникальных индекса (1-по первому слову, 2-по 1+2 слова, 3-по 1+2+3) и по полному полю.
Если первый символ был * , то filter на вхождение иначе подвод по нужному индексу.
Работало все очень приемлемо.




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 53 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 0
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет