2013-03-29 6 views
1

У меня есть две таблицы с тем же содержимым, что и старая копия первой таблицы. Таким образом, у живого стола может быть изменение цены. Я пытаюсь создать запрос, чтобы найти изменения цен в старых записях.MySQL - две таблицы, сравнить две строки

Products

ID

Title

Price

Старый стол

Old_Products

ID

Title

Price

Im используя этот запрос до сих пор, но не делать то, что я хочу.

SELECT products.id 
FROM products 
LEFT JOIN products_old ON products.id = products_old.id 
WHERE products.price IS NULL 

ответ

2

Создайте предложение where, чтобы определить, где цена не равна между старой и новой таблицей.

SELECT products.id, products.title, products.price, products_old.price 
FROM products 
JOIN products_old ON products.id = products_old.id 
WHERE products.price <> products_old.price 

Если это простой запрос работает плохо на базе данных я хотел бы предложить проверки индексов, примененные на обеих таблицах. Кроме того, как упоминалось ypercube, использование простого внутреннего соединения будет более эффективным, чем использование внешнего соединения.

+0

Спасибо, я пробовал это Кевин. Наша база данных насчитывает более миллиона записей, и для этого запроса требуется много времени. Какие-либо предложения? – okett

+0

@okett Я не уверен, как оптимизировать простое соединение, этот запрос довольно простой. У вас есть индексы, построенные на столбцах id и price? –

+2

Почему 'LEFT JOIN'? –