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



Пост N: 16
Зарегистрирован: 19.08.10
ссылка на сообщение  Отправлено: 28.02.11 22:59. Заголовок: Индексы САМИ подключаются к таблице?


Заметил интересный момент: модуль заполняет таблицу данными и ПОСЛЕ заполнения строит индексы. Тут проблем нет.
(После - для быстродействия, ибо в этом случае получаю выигрыш по скорости в 6,5 раз.)

Но вот при повторном вызове начинается самое интересное: заполнение таблицы идет гораздо медленнее (?!).

/* фрагменты кода*/

Request DBFCDX
Rddsetdefault( "DBFCDX" )

DBCreate ( ( "Calls.dbf" ) , aarq )
Use ( "Calls.dbf" ) Alias Calls New
/* Индексы НЕ ПОДКЛЮЧЕНЫ!!!*/
/*
Index ON Calls->Abonent Tag Abonent TO Calls // так было раньше, но скорость никакая. Позже создадим...
*/
/* Удаляем ВСЕ записи из существующей базы */
zap

/* Далее наполнение таблицы... */

/* Самое интересное: строим индексы */

Select Calls

Index ON Calls->Abonent Tag Abonent TO Calls

/* конец процедуры*/


Вроде все правильно, но... При первом вызове отрабатывает за 3:30, а при втором - за 6:20.
Если перед первым вызовом убираю Index ON... , то время одинаковое.
Если оставляю - опять медленно.
Если оставляю, но перед вторым запуском вручную удаляю файл индекса - быстро.

То есть при отсутствии(!) файла индекса все замечательно.

Задумался: явно же индексы не подключаю!!! И в мануале по USE:

/*
USE [<xcDatabase>[ INDEX <xcIndex list>]
[ ALIAS <xcAlias>]
[ EXCLUSIVE | SHARED ] [ NEW ] [ READONLY ]
[ VIA <cDriver>]]

INDEX - опционально.

А индексы подключаются потом по выбору с помощью INDEX ON, SET INDEX.
*/

И самое интересное: заменив

Index ON Calls->Abonent Tag Abonent TO Calls

на

Index ON Calls->Abonent Tag Abonent TO idxCalls

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


И как с этим бороться? Не отраженный момент в документации, неправильное прочтение ее мной, глюк реализации или...???

PS: пару-тройку минут пережить можно, но на реальных таблицах под 6 миллионов записей разница, мягко говоря, весьма заметна. Тут уже 3-4 десятка минут набегает.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]





Пост N: 162
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 28.02.11 23:08. Заголовок: Set autopen off или ..


Set autopen off или удалить файл с индексом.

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



Пост N: 17
Зарегистрирован: 19.08.10
ссылка на сообщение  Отправлено: 28.02.11 23:48. Заголовок: AlexMyr, спасибо за ..


AlexMyr, спасибо за пинок в нужном направлении!

Либо хорошо забыл, либо вообще не знал про SET AUTOPEN OFF.

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

Нарыл, однако в доке от xHarbour. Буду штудировать ее.

И ведь что самое гнусное: засада именно с DBFCDX

Цитата из документации:

Some replaceable database drivers support automatic opening of index files with the USE command when the index file has the same file name as the database file (without extension). An example is the DBFCDX driver. SET AUTOPEN toggles this behavior.

А ведь мысль была программно индексный файл удалять! А тут 3 слова, и проблема ушла.

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




Пост N: 1698
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.11 00:27. Заголовок: Я всегда удаляю инде..


Я всегда удаляю индексный файл перед его созданием.
Это еще в Клипере 5.3 засада была....

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



Пост N: 19
Зарегистрирован: 19.08.10
ссылка на сообщение  Отправлено: 01.03.11 00:33. Заголовок: Andrey пишет: Я все..


Andrey пишет:

 цитата:
Я всегда удаляю индексный файл перед его созданием.
Это еще в Клипере 5.3 засада была....



Вот как-то именно 5.3 мимо меня проскочил. Увы...

А засада осталась!


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



Пост N: 3
Зарегистрирован: 08.02.11
ссылка на сообщение  Отправлено: 01.03.11 04:43. Заголовок: по старой (древней) ..


по старой (древней) памяти
это только с CDX - при открытии DBF ищется CDX с таким же именем и открывается
с NTX такого нет - только в явном виде

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



Пост N: 22
Зарегистрирован: 19.08.10
ссылка на сообщение  Отправлено: 01.03.11 11:50. Заголовок: Спасибо всем за помо..


Спасибо всем за помощь!
Теперь на ЭТИ грабли не наступлю

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

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