loading..
Русский    English
11:32
листать

Упражнение 17

Найдите портативные компьютеры, скорость которых меньше скорости любого ПК. Вывести: type, model, speed

Ошибки, которые здесь допускаются, связаны с излишним использованием операций соединения. Самым вопиющим примером, по мнению автора, является следующий:

Консоль
Выполнить
  1. SELECT DISTINCT p.type, l.model, l.speed
  2. FROM Product p, Laptop l, PC c
  3. WHERE l.speed < (SELECT MIN (speed)
  4.                  FROM PC
  5.                  ) AND
  6.       p.type = 'laptop';

В предложении FROM используется декартово произведение трех таблиц! Если присутствие таблицы Product еще можно как-то оправдать — ведь в задаче требуется указать еще и тип продукции, то таблицу PC можно смело исключить — это не повлияет на результат. Естественно, решение не будет оптимальным по скорости выполнения. Кроме того, могут возникнуть проблемы с памятью, так как мощность промежуточного результата может стать огромной даже для относительно небольших таблиц. Напомним, что мощность декартового произведения равна произведению мощностей операндов. Например, для таблиц с количеством строк 100, 500 и 1000 их декартово произведение будет содержать 50000000 строк!

И, тем не менее, решение является правильным, так как предложение DISTINCT исключает все дубликаты, появившиеся в результате декартового произведения.

ПиР

Решить упражнение на SQL-EX.RU

Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE Convert COUNT CROSS APPLY CTE DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INNER JOIN insert INTERSECT IS NOT NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX MIN MONTH MySQL NOT Больше тэгов
Учебник обновлялся
вчера
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100