Кажется, у меня очень низкая производительность в выводе sql.
Вот мой упрощенный sql statment с простым INNER JOIN.
Я сделал профилирование, Отправка данных кажется задержкой.
SELECT c.prod_name, c.ean, s.ean
FROM catalogue c INNER JOIN
store s
ON c.ean = s.ean
WHERE MATCH(c.prod_name) AGAINST('+jumper' IN BOOLEAN MODE)
GROUP BY s.ean
LIMIT 100;
Вот вывод EXPLAIN
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE s NULL index ean ean 32 NULL 100 100 Using index
1 SIMPLE c NULL fulltext ean,prod_name prod_name 0 const 1 10 Using where; Ft_hints: no_ranking
Создать каталог таблиц:
CREATE TABLE `catalogue` (
`catalogue_id` int(11) NOT NULL AUTO_INCREMENT,
`prod_name` varchar(255) DEFAULT NULL,
`feature1` varchar(255) DEFAULT '',
`feature2` varchar(255) DEFAULT '',
`ean` varchar(20) DEFAULT NULL,
PRIMARY KEY (`catalogue_id`),
UNIQUE KEY `ean` (`ean`),
FULLTEXT KEY `prod_name` (`prod_name`)
) ENGINE=InnoDB AUTO_INCREMENT=3197133 DEFAULT CHARSET=utf8
Создать магазин таблиц
CREATE TABLE `store` (
`product_id` int(11) NOT NULL AUTO_INCREMENT,
`ean` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
`salePrice` varchar(10) CHARACTER SET latin1 NOT NULL DEFAULT '0',
`offerPrice` varchar(10) CHARACTER SET latin1 NOT NULL DEFAULT '0',
PRIMARY KEY (`product_id`),
KEY `ean` (`ean`)
) ENGINE=InnoDB AUTO_INCREMENT=1835788 DEFAULT CHARSET=utf8
Я собираюсь объединить две таблицы по EAN (штрих-код Великобритании / ЕС). Таблица каталога содержит список из более чем 3,4 м продуктов с уникальным штрих-кодом. В таблице магазинов указана продажная цена каждого продукта, поскольку один и тот же продукт будет продаваться несколькими продавцами / магазинами.
Я использую AWS RDS db.t2.small - 1 vCPU - 2 ГБ памяти.
Спасибо заранее.