Установка Текдок оптимизированого — различия между версиями

Материал из MstarProject Manual
Перейти к: навигация, поиск
Строка 26: Строка 26:
  
 
Добавление индексов для кроссов
 
Добавление индексов для кроссов
<pre>ALTER TABLE `cat_alt_crosses_tmp` ADD INDEX ( `Search` , `Kind` ) ;
+
<pre>
ALTER TABLE `cat_alt_crosses_tmp` ADD INDEX ( `ID_art` ) ;
+
 
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX  (`ID_art`, `ID_grp`) ;
+
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `id_art` ( `ID_art` ) ;
+
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `id_grp` ( `ID_grp` ) ;
+
  
Если еще нет:
 
 
CREATE TABLE IF NOT EXISTS `cat_alt_link_str_art` (
 
CREATE TABLE IF NOT EXISTS `cat_alt_link_str_art` (
 
   `id_tree` int(11) NOT NULL,
 
   `id_tree` int(11) NOT NULL,
Строка 40: Строка 36:
 
PRIMARY KEY (`id_tree`,`id_art`)
 
PRIMARY KEY (`id_tree`,`id_art`)
 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 +
 +
 +
ALTER TABLE `cat_alt_tree` ADD INDEX `ID_src` ( `ID_src` ) ;
 +
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `ID_grp` ( `ID_grp` ) ;
 +
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `ID_art_2` ( `ID_art` ) ;
 +
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `ID_art` ( `ID_art`,`ID_grp` ) ;
 +
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `ID_typ` (`ID_typ`,`ID_art`,`ID_sup`,`ID_grp`) ;
 +
 +
ALTER TABLE `cat_alt_crosses_tmp` ADD INDEX ( `Search` , `Kind` ) ;
 +
ALTER TABLE `cat_alt_crosses_tmp` ADD INDEX ( `ID_art` ) ;
 +
ALTER TABLE `cat_alt_link_str_art` ADD INDEX `id_tree` ( `id_tree` ) ;
 +
ALTER TABLE `cat_alt_link_typ_inf_tmp` ADD INDEX  (`ID_grp`) ;
  
 
INSERT ignore INTO `cat_alt_link_str_art`(`id_tree`, `id_art`, `code`, `id_sup_src`)  
 
INSERT ignore INTO `cat_alt_link_str_art`(`id_tree`, `id_art`, `code`, `id_sup_src`)  
Строка 48: Строка 56:
 
inner join cat_alt_suppliers s on s.ID_sup=a.ID_sup;
 
inner join cat_alt_suppliers s on s.ID_sup=a.ID_sup;
  
ALTER TABLE `cat_alt_link_str_art` ADD INDEX `id_tree` ( `id_tree` ) ;
+
 
ALTER TABLE `cat_alt_link_typ_inf_tmp` ADD INDEX  (`ID_grp`) ;
+
CREATE TABLE IF NOT EXISTS `cat_alt_original` (
 +
  `id_oe` int(11) NOT NULL AUTO_INCREMENT,
 +
  `id_art` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Идентификатор',
 +
  `oe_code` varchar(105) DEFAULT NULL,
 +
  `code` varchar(50) DEFAULT NULL COMMENT 'Для поиска',
 +
  `oe_brand` smallint(6) unsigned NOT NULL COMMENT 'Идентификатор источника',
 +
  `brand` smallint(6) unsigned NOT NULL COMMENT 'Идентификатор источника',
 +
  PRIMARY KEY (`id_oe`),
 +
  KEY `oe_code` (`oe_code`),
 +
  KEY `code` (`code`),
 +
  KEY `oe_brand` (`oe_brand`),
 +
  KEY `brand` (`brand`),
 +
  KEY `id_art` (`id_art`)
 +
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;
 +
 
 +
insert into opti_1603.cat_alt_original (id_art,oe_code,code,oe_brand,brand)
 +
select  a.id_art
 +
, c.Search as oe_code,
 +
a.Search as code
 +
,s.id_src as oe_brand
 +
,s2.id_src as brand
 +
from opti_1603.cat_alt_crosses_tmp as c
 +
INNER JOIN opti_1603.cat_alt_articles a on a.ID_art=c.ID_art
 +
INNER JOIN opti_1603.cat_alt_suppliers as s on c.Brand=s.Name
 +
INNER JOIN opti_1603.cat_alt_suppliers as s2 on a.id_sup=s2.id_sup
 +
where 1=1 AND c.Kind=3
 +
 
 
</pre>
 
</pre>
  

Версия 11:23, 1 октября 2016

Оптимизированный Текдок создается из базы оригинального Текдок. Картинки и PDF используются из оригинального Текдок и не изменяется расположение этих файлов.

Для формирования базы используются запросы из файлов:

catalog_create.sql
catalog_insert1.sql
catalog_insert2.sql
catalog_insert3.sql

Эти файлы находятся в архиве: Файл:Catalog opti.zip

В принципе можно все объединить в один файл.

Перед запуском скриптов укажите правильно исходную базу оригинального Текдока, путем замены например _1302 на _1303 во всех файлах.

В файле catalog_create.sql создаются таблицы и формируются данные переводов использую язык и страну, поэтому проконтролируйте эти значения.

Язык указывается в переменной lng_id, значение 16 соответствует русскому языку, 4 - English.

Страна для выбора названия моделей, модификаций и так далее указывается в cou_id, значение 187 соответствует России, а 225 - Украине, 250 - Европа, 251 - все

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

Аналогичная ситуация с языком, если сайт будет мультиязычным, то придется создавать отдельные базы по разным языкам и как-то учитывать это в подключении оптимизированного Текдока, например путем изменения константы DB_OCAT в зависимости от языка сайта. Или оставлять подключение к оригинальному Текдоку вместо оптимизированого(?)


Добавочные запросы:

Добавление индексов для кроссов



CREATE TABLE IF NOT EXISTS `cat_alt_link_str_art` (
  `id_tree` int(11) NOT NULL,
  `id_art` int(11) NOT NULL,
  `code` varchar(50) NOT NULL,
  `id_sup_src` int(11) NOT NULL,
PRIMARY KEY (`id_tree`,`id_art`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


ALTER TABLE `cat_alt_tree` ADD INDEX `ID_src` ( `ID_src` ) ;
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `ID_grp` ( `ID_grp` ) ;
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `ID_art_2` ( `ID_art` ) ;
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `ID_art` ( `ID_art`,`ID_grp` ) ;
ALTER TABLE `cat_alt_link_typ_art` ADD INDEX `ID_typ` (`ID_typ`,`ID_art`,`ID_sup`,`ID_grp`) ;

ALTER TABLE `cat_alt_crosses_tmp` ADD INDEX ( `Search` , `Kind` ) ;
ALTER TABLE `cat_alt_crosses_tmp` ADD INDEX ( `ID_art` ) ;
ALTER TABLE `cat_alt_link_str_art` ADD INDEX `id_tree` ( `id_tree` ) ;
ALTER TABLE `cat_alt_link_typ_inf_tmp` ADD INDEX  (`ID_grp`) ;

INSERT ignore INTO `cat_alt_link_str_art`(`id_tree`, `id_art`, `code`, `id_sup_src`) 
SELECT lsg.ID_tree id_tree,lai.ID_art id_art,a.Search code,s.ID_src id_sup_src
FROM cat_alt_link_str_grp lsg
inner join cat_alt_link_art_inf lai on lsg.ID_grp=lai.ID_grp
inner join cat_alt_articles a on a.ID_art=lai.ID_art
inner join cat_alt_suppliers s on s.ID_sup=a.ID_sup;


CREATE TABLE IF NOT EXISTS `cat_alt_original` (
  `id_oe` int(11) NOT NULL AUTO_INCREMENT,
  `id_art` mediumint(8) unsigned NOT NULL DEFAULT '0' COMMENT 'Идентификатор',
  `oe_code` varchar(105) DEFAULT NULL,
  `code` varchar(50) DEFAULT NULL COMMENT 'Для поиска',
  `oe_brand` smallint(6) unsigned NOT NULL COMMENT 'Идентификатор источника',
  `brand` smallint(6) unsigned NOT NULL COMMENT 'Идентификатор источника',
  PRIMARY KEY (`id_oe`),
  KEY `oe_code` (`oe_code`),
  KEY `code` (`code`),
  KEY `oe_brand` (`oe_brand`),
  KEY `brand` (`brand`),
  KEY `id_art` (`id_art`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

insert into opti_1603.cat_alt_original (id_art,oe_code,code,oe_brand,brand)
select  a.id_art 
, c.Search as oe_code, 
a.Search as code
,s.id_src as oe_brand
,s2.id_src as brand
from opti_1603.cat_alt_crosses_tmp as c
INNER JOIN opti_1603.cat_alt_articles a on a.ID_art=c.ID_art
INNER JOIN opti_1603.cat_alt_suppliers as s on c.Brand=s.Name
INNER JOIN opti_1603.cat_alt_suppliers as s2 on a.id_sup=s2.id_sup
where 1=1 AND c.Kind=3 

Обновление списка моделей и брендов

На данный момент это нужно делать после перехода на новый текдок в Empanel - Регламентные работы под пользователем: admin_mstar