parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Вопрос по преобразованию таблиц

Konstantin 20.02.2003 17:53

Доброго времени суток!
Надеюсь, что мой вопрос не сочтут за офф-топик.
Итак:
1. Есть программа оперучета (писанная по дос и пользующая dbf файлы)
2. Структура одного из них:
 -----------------------------------------------------------------
|item_id|parent_id|is_group|title|price1|price2|price3|....price36|
 -----------------------------------------------------------------
3.Кол-во записей ~7000
4. Исторически такая структура сложилась и в ближайшем будущем ее переписывать никто не собирается
5. Есть задача - выкладывать данные из этого файлика в виде прайса на страницу
6. Структура, которую пользую я (предвидя вопрос а на кой переделывать стр-ру - мне так удобней с ней работать в дальнейшем - отдавать пользователю доступные только ему цены; да и место она как бы меньше занимает):

6.1. Таблица ТОВАРЫ
 --------------------------------
|item_id|parent_id|is_group|title|
 --------------------------------
6.2. Связка ТОВАРЫ-ЦЕНЫ
 -------------------------
|id|item_id|price_id|price|
 -------------------------
6.3. Таблица ЦЕНЫ
 --------------------
|price_id|price_name|
 --------------------
7. Еженощно таблица из п.2 растраивается и принимает вид из п6.

8. На локале (Celeron-1000/256/7200 IDE) у меня это занимает ~7 минут, причем проблема (длительная обработка) вся в код, обрабатывающем операции над таблицами, а естественно не в "закачке" данных в БД

9. Код:
1 @load_data_from_file[file_to_load]
2   ^if(-f $file_to_load){
3      $tbl_file[^table::load[$file_to_load]]
4
5      ^tbl_file.menu{
6
7########Для совместимости наименований в dbf и MySQL
8        $id[$tbl_file.id]
9        $p_id[$tbl_file.id]
10       $isgroupt[$tbl_file.isgroup]
11       $title[$tbl_file.name]
12       $tab_line[$tbl_file.fields]
13
14#########Перепахиваем outcost_0....outcost_35 и добавляем их в БД
15       ^for[i](0;35){
16	   ^if($tab_line.outcost$i){^void:sql{INSERT INTO items_prices(it_id, p_id, price) VALUES(^id.int(0), $i, $tab_line.outcost$i)}}
17 	 }
18     }
19 }{
20    File not found
21 }
22#end
10. Вспомнив, что
LOAD DATA ......
занимает гораздо меньше времени, чем
INSERT
, т.к. индексы генеряться в конце добавления я попробовал кидать все в промежуточную таблицу, чем намертво положил свой комп.....

11. Очень хочется услышать совета по обработке таблицы