В последнем проекте моего класса данных я пытаюсь создать анализ корзины рынка в MySQL (с использованием Workbench 6.3 CE и Server 5.7) из базы данных, содержащей более 900 000 транзакций.
Вот эскиз таблицы, которую я собрал, чтобы получить то, что мне нужно (некоторые вещи предназначены для последующих запросов) ...
Таблица:
sales
Колонки:
pos_trans_id INT(11)
basketId VARCHAR(45)
productNumber VARCHAR(25)
productDescription VARCHAR(255)
categoryCode VARCHAR(25)
categoryDescription VARCHAR(255)
subcategoryCode VARCHAR(25)
subcategoryDescription VARCHAR(255)
quantity INT(11)
purchaseAmt DECIMAL(12,2)
dateOfSale INT(11)
Это запрос, который я собрал вместе, чтобы попытаться сделать свою собственную версию анализа корзины рынка:
SELECT purchaseone.productNumber, purchaseone.productDescription, purchasetwo.productNumber, purchasetwo.productDescription, purchaseone.basketId
FROM
(SELECT DISTINCT productNumber, productDescription, basketId
FROM sales) AS purchaseone
JOIN
(SELECT DISTINCT productNumber, productDescription, basketId
FROM sales) AS purchasetwo
ON
(
purchaseone.basketId = purchasetwo.basketId AND
purchaseone.productNumber != purchasetwo.productNumber AND
purchaseone.productNumber < purchasetwo.productNumber
);
Проблема, с которой я сталкиваюсь, заключается в том, что запрос будет выполняться часами, часами и часами и в конечном итоге ничего не даст мне, иначе визуализация в Workbench займет так много времени, что он бесполезен.
У кого-нибудь есть идеи, если я делаю что-то здесь не так или есть что-то, что я должен ускорить? Заранее спасибо.
* Редактировать: вот дополнительный контекст, который вы просили. *
Полный Файл необработанных данных
Две пользовательских таблицы, которые я создал до сих пор:
CREATE TABLE `sales`
(\n `pos_trans_id` int(11) NOT NULL DEFAULT \'0\',
\n `basketId` varchar(45) DEFAULT NULL,
\n `productNumber` varchar(25) DEFAULT NULL,
\n `productDescription` varchar(255) DEFAULT NULL,
\n `categoryCode` varchar(25) DEFAULT NULL,
\n `categoryDescription` varchar(255) DEFAULT \'0\',
\n `subcategoryCode` varchar(25) DEFAULT NULL,
\n `subcategoryDescription` varchar(255) DEFAULT \'0\',
\n `quantity` int(11) DEFAULT NULL,
\n `purchaseAmt` decimal(12,2) DEFAULT NULL,
\n `dateOfSale` int(11) DEFAULT NULL
\n)
ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE 'date'
(\n `dateKey` int(11) NOT NULL,
\n `dayOfTheMonth` int(2) DEFAULT NULL,
\n `dayOfTheWeek` int(1) DEFAULT NULL,
\n PRIMARY KEY (`dateKey`)
\n)
\n ENGINE=InnoDB DEFAULT CHARSET=latin1