Характерные ошибки при решении задач на написание запросов на выборку (SELECT)База данных «Компьютерная фирма»Упражнение 17 |
||
Найдите портативные компьютеры, скорость которых меньше скорости любого ПК. Вывести: type, model, speed Ошибки, которые здесь допускаются, связаны с излишним использованием операций соединения. Самым вопиющим примером, по мнению автора, является следующий:
В предложении FROM используется декартово произведение трех таблиц! Если присутствие таблицы Product еще можно как-то оправдать — ведь в задаче требуется указать еще и тип продукции, то таблицу PC можно смело исключить — это не повлияет на результат. Естественно, решение не будет оптимальным по скорости выполнения. Кроме того, могут возникнуть проблемы с памятью, так как мощность промежуточного результата может стать огромной даже для относительно небольших таблиц. Напомним, что мощность декартового произведения равна произведению мощностей операндов. Например, для таблиц с количеством строк 100, 500 и 1000 их декартово произведение будет содержать 50000000 строк! И, тем не менее, решение является правильным, так как предложение DISTINCT исключает все дубликаты, появившиеся в результате декартового произведения.
|