Рассмотрим У меня есть две таблицы, детали и RATE со следующими столбцами:Слишком много декартовы продуктов, делая запрос для запуска медленнее
ПОДРОБНОСТИ стол:
CREATE TABLE DETAILS(
LONG ID PRIMARY KEY AUTO_INCREMENT,
DOUBLE PRICE1,
DOUBLE PRICE2,
DOUBLE PRICE3,
VARCHAR(25) CURRENCY,
DATE CREATED_DATE,
VARCHAT(50) COMPLETED
..................
Few more columns
);
RATE ТАБЛИЦА:
CREATE TABLE RATE(
LONG ID PRIMARY KEY AUTO_INCREMENT,
DOUBLE RATE,
VARCHAR(25) CURRENCY,
DATE CREATED_DATE
..................
Few more columns
);
И У меня есть запрос на обновление таблицы DETAILS, как показано ниже.
UPDATE DETAILS D, RATE R
SET D.PRICE1=D.PRICE1*R.RATE,
D.PRICE2=D.PRICE2*R.RATE,
D.PRICE3=D.PRICE3*R.RATE
WHERE
D.CURRENCY=R.CURRENCY AND
DATE(D.CREATED_DATE) = DATE(R.CREATED_DATE) AND
D.COMPLETED IS NULL OR DO.COMPLETED='ABC' AND
D.CURRENCY!='RUPEE';
Перед запрос работает нормально, но как таблица выращены этот запрос начал занимать больше времени, и это дает cartesion продукт с точки зрения миллиардов.
Есть ли способ, которым я могу оптимизировать этот запрос? Любая помощь будет очень полезна.
Можете ли вы опубликовать вывод запроса 'EXPLAIN UPDATE ....', пожалуйста? – Simon
Можете ли вы перечислить индексы, которые у вас есть на каждой таблице? –
Hi Simon. Для каждого запуска мы вставляем обе таблицы с новыми данными и после ввода данных, мы вызываем этот запрос обновления для обновления данных. – user2823355