Запрос оптимален?... Подскажите пож-та...

beba

Новичок
Запрос оптимален?... Подскажите пож-та...

Я не думаю что запрос будет оптимальным.... но все же...
Ситуация следующая.
Есть таблица с обновление информации о товаре:
----------------------------
TABLE UPDATE_INFO
----------------------------
products_update_id
products_name
products_barcode
products_price
products_quantity
++++++++++++++++
и таблица-справочник с самими товарами
-----------------------------
TABLE PRODUCTS
-----------------------------
products_id
products_barcode
.......................
products_price
products_quantity
++++++++++++++++

Задача... Выбрать запросом все уникальные строки из таблицы с обновлениями. Уникальной называем строку, которая отличается хотя бы по одному из полей: products_barcode, products_price, products_quantity.
Задача 2 (аналогичная). ... Выбрать запросом все уникальные строки из таблицы с товарами. Уникальной называем строку, которая отличается хотя бы по одному из полей: products_barcode, products_price, products_quantity.

Решение с моей стороны след. запрос.
PHP:
select t.products_update_id 
from update_info t
where t.products_barcode not in (
  select t2.products_barcode from products t2 
) or t.products_price not in (
  select t2.products_price from products t2 
) or t.products_quantity not in (
  select t2.products_quantity from products t2 
)
Мне кажется это плохой вариант запроса... Поможет кто?
Хочу оговорится, что кол-во записей в одной и другой табл. в диапазоне от (2000-10000).
Спасибо за внимание.
 

Andreika

"PHP for nubies" reader
не вдаваясь в подробности, но стоп сигнал зайца ака DISTINCT не поможет?
 

chira

Новичок
Код:
select t.products_update_id 
from update_info t
  LEFT JOIN products t2 ON
    t.products_barcode = t2.products_barcode
    OR t.products_price = t2.products_price
    OR t.products_quantity = t2.products_quantity
WHERE t2.product_id IS NULL
 

beba

Новичок
chira
Спасиб те огромное.
Тему можно будет закрывать

-~{}~ 17.02.06 00:36:

Немного для статистики:
Количество записей в update_info 2961,
Количество записей в products 2568.
Fedora Core 2
MySql 4.1.11
Php 5.0.4
Compaq p3 800, 512Mb

Запрос
PHP:
select t.products_update_id 
from update_info t
  LEFT JOIN products t2 ON
    t.products_barcode = t2.products_barcode
WHERE t2.product_id IS NULL
500 rows in set (1 min 10.21 sec)

Запрос
PHP:
select t.products_update_id 
from update_info t
where t.products_barcode not in (
  select t2.products_barcode from products t2 
)
chira
Еще раз спасиб.
 
Сверху