Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / CDX / 11 сообщений из 11, страница 1 из 1
14.10.2003, 12:38
    #32292531
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
Всем доброе утро...

Как можно организовать быстрый поиск и выборку из файла без CDX...
Причем поиск сразу по нескольким полям...
Файлы огромные... От пол-лимона до лимона записей...

А то эти CDX достали просто... чуть-че сразу переиндексируйте базу...
А занимают они больше чем сами DBF...

Как можно побороть ошибку в DBF: Ключ не уникален. Сам DBF при этом не хочет юзаться...

Плиз хелп...
...
Рейтинг: 0 / 0
14.10.2003, 13:22
    #32292607
Nikolai Kremko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
>Как можно организовать быстрый поиск и выборку из файла без CDX...

--Наверное вы имели в виду "без индексов" --- никак. Для того индексы и нужны


>Файлы огромные... От пол-лимона до лимона записей...

--Фокс работает с файлами и до 1 000 000 000 записей.


>А то эти CDX достали просто... чуть-че сразу переиндексируйте базу...
Может работа с таблицами ведется некорректно.... У меня если индексы и падают -- то КРАЙНЕ РЕДКО. Может просто разобраться с буфферизацией и блокировками... Или у вас частые проблемы с сетью?

>А занимают они больше чем сами DBF...
Увеличение числа индексов ведет к увеличению времени, которое надо на обновление\создание записей...поэтому к проектированию тегов надо подходить серьезно

>Как можно побороть ошибку в DBF: Ключ не уникален. Сам DBF при этом не хочет юзаться...

попробуй открыть таблицу на модификацию и изменить тип индекса на regular
потом исправь ошибку и тип индекса верни обратно. :)
...
Рейтинг: 0 / 0
14.10.2003, 14:01
    #32292669
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
Nikolai Kremko:
Пример...

У меня есть файл на 80 метров...(более лимона записей)
Он связан с 5 таблицами... (вот уже 5 индексов что бегать по ней)
И пару индексов для поиска по таблице...
Его CDX занимает 40 метров...

По-поводу LOCAT-a(по нескольким полям) и SEEK-а у меня нет вопросов, работает мгновенно...

Но есть недостатки:
1) Инсталляционный пакет(развернутый) занимает на 40 метров больше(если учитывать только этот файл).
2) Если задача повисла... то при ее завершении, шанс поламаться у CDX - просто огромный(почемуто)...
3) Переиндексация происходит медленно...
4) Если кажды раз создавать индексы:
index on поле1 tag поле1 of файл1,
то это занимает около 20 секунд на каждый индекс.

А вот еще одна проблема появилась от которой у меня просто волосы дыбом становятся...

У меня собирается SQL-запрос...(в зависимости от условий)
Если просто бежать по дереву(TREEVIEW), то он работает довольно быстро...
Если же я произвел выборку по всей таблице с условием, а потом просто бегу по дереву... и запускаю этот-же запрос... с такими же параметрами... то он работает около минуты... а в некоторых случаях машина просто виснит...

Хотелось как-нибудь обойтись без CDX...
Может есть какой-то способ создать индекс... но очень быстро...
И хотелось бы услышать предложении по-поводу SQL-запроса.

Всем сенкс...
...
Рейтинг: 0 / 0
14.10.2003, 16:26
    #32292945
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
2IgorProgrammer

> 2) Если задача повисла... то при ее завершении, шанс поламаться у CDX - просто огромный(почемуто)...

Программа сетевая/несетевая? Версия Windows? Объем памяти?
Очень похоже, что у тебя с памятью проблемы (возможно с оперативной, а может быть и с виртуальной)

> 3) Переиндексация происходит медленно...
4) Если кажды раз создавать индексы:
index on поле1 tag поле1 of файл1,
то это занимает около 20 секунд на каждый индекс.


В обычных условиях - это достаточно редкие операции. Если часто летят индексы, надо прежде всего определить почему.

> У меня собирается SQL-запрос...(в зависимости от условий)
Если просто бежать по дереву(TREEVIEW), то он работает довольно быстро...
Если же я произвел выборку по всей таблице с условием, а потом просто бегу по дереву... и запускаю этот-же запрос... с такими же параметрами... то он работает около минуты... а в некоторых случаях машина просто виснит...


В sql-запросах индексы используются достаточно активно.
Есть такая полезная функция SYS(3054), она позволяет определить, где затыкаются запросы.

> Хотелось как-нибудь обойтись без CDX...

Не стоит изобретать велосипед.
Код: plaintext
HELP Rushmore optimization
...
Рейтинг: 0 / 0
15.10.2003, 13:21
    #32294008
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
NNN:

Программа сетевая/несетевая? Версия Windows? Объем памяти?
Очень похоже, что у тебя с памятью проблемы (возможно с оперативной, а может быть и с виртуальной)


Сетевая... Windows разный... Объем памяти разный...
Есть разные пользователи... У некоторых даже ниже 1 пинька...
Там запустив переиндексацию можно на пару часиков идти гулять...
А как-то процесс переиндексации можно ускорить?

В обычных условиях - это достаточно редкие операции. Если часто летят индексы, надо прежде всего определить почему.

Пользователи на столько грамотные... Что иногда снимают задачу... недождавшись ее завершения... есть которые любят жать на резет...
И при этом почему-то ломаются не сами DBF а их индексы...

В sql-запросах индексы используются достаточно активно.
Есть такая полезная функция SYS(3054), она позволяет определить, где затыкаются запросы.


Про SYS(3054) сказано что есть три уровня оптимизации... Поставил SYS(3054,1) и на SYS(3054,11), эфект тот же... минута на выполнение...
И не сказано как проверить где затыкается запрос....
...
Рейтинг: 0 / 0
15.10.2003, 14:41
    #32294150
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
2IgorProgrammer

Есть разные пользователи... У некоторых даже ниже 1 пинька...
Там запустив переиндексацию можно на пару часиков идти гулять...
А как-то процесс переиндексации можно ускорить?


Да мне что-то, кроме как наращивание аппартных ресурсов, ничего на ум не приходит.

> Пользователи на столько грамотные... Что иногда снимают задачу... недождавшись ее завершения... есть которые любят жать на резет...
И при этом почему-то ломаются не сами DBF а их индексы...


А ты буфекризацию используешь?
Посмотри сколько времени уходит на открытие-закрытие таблиц и индексов. Глупо конечно, но с такими юзерами, может быть разумнее держать все закрытым и окрывть по мере надобности.

> Про SYS(3054) сказано что есть три уровня оптимизации... Поставил SYS(3054,1) и на SYS(3054,11), эфект тот же... минута на выполнение...
И не сказано как проверить где затыкается запрос....


А оно разве не пишет, какие индексы используются, создаются они при этом или уже существуют?
Или опять я что-то путаю? :(
...
Рейтинг: 0 / 0
15.10.2003, 17:03
    #32294385
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
NNN:

А ты буфекризацию используешь?
Посмотри сколько времени уходит на открытие-закрытие таблиц и индексов. Глупо конечно, но с такими юзерами, может быть разумнее держать все закрытым и окрывть по мере надобности.


Когда используешь более 100 таблиц...
А если добавить еще и 100 файлов индексов...
Мона и неуследить че открыл, а че закрыл...
Зачем лишняя головная боль...

А оно разве не пишет, какие индексы используются, создаются они при этом или уже существуют?
Или опять я что-то путаю? :(


Я че-то такого ни че не надыбал :(
...
Рейтинг: 0 / 0
15.10.2003, 17:23
    #32294415
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
2IgorProgrammer

> Зачем лишняя головная боль...

Ну это тоже правильно. Ты уж сам решай, как из головных болей выбирать меньшую.

> Я че-то такого ни че не надыбал :(

Пишу
Код: plaintext
1.
=SYS( 3054 , 1 )
select * from table1 WHERE number= 100 

Получаю
Код: plaintext
1.
Using index tag Number to rushmore optimize intermediate result
Rushmore optimization level for intermediate result: full

Проверяй селекты, может есть возможность оптимизировать.
...
Рейтинг: 0 / 0
15.10.2003, 18:43
    #32294553
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
NNN:

И впрям оно выводит на скрин...

Но если есть хоть одна форма...
Начинает рисовать на ей...
Как убрать эту нарисовку с формы...
И рисовать значения где-нибудь еще???
...
Рейтинг: 0 / 0
15.10.2003, 22:16
    #32294672
NNN
NNN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
2IgorProgrammer

> И впрям оно выводит на скрин...
Но если есть хоть одна форма...
Начинает рисовать на ей...


Код: plaintext
ACTIVATE SCREEN


> Как убрать эту нарисовку с формы...
И рисовать значения где-нибудь еще???


Код: plaintext
1.
2.
=SYS( 3054 , 1 ,  "SomeVariable" )
select * from table1 WHERE number= 100 
=MessageBox(SomeVariable)

Подойдет?
...
Рейтинг: 0 / 0
16.10.2003, 13:51
    #32295303
IgorProgrammer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDX
NNN:

=SYS(3054,1, "SomeVariable")

Шестой лис ругается...
Function argument value, type, or count is invalid
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / CDX / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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