Видалення кортежів-дублікатів
Мова SQL. Операції над відношеннями
У SQL відношення розглядаються не як множини, а як мультімножини, тому будь-який кортеж може бути включений у відношення кілька разів. Наприклад, однакові кортежі можуть утворитись у результаті проекції, коли залишається частина атрибутів.
Якщо дублювання кортежів треба уникнути, після слова SELECT вказується службове слово DISTINCT. Ця операція відповідає оператору реляційної алгебри.
Приклад 5.12. Повернімося до прикладу 5.10 і знову розглянемо, з якими продюсерами співпрацював актор ‘Harrison Ford’. Без підзапитів ця задача вирішується немовби простіше:
Рис.5.20. Запит без підзапитів для рішення задачі прикладу 5.10.
Для видалення кортежів-дублікатів перший рядок має бути таким:
SELECT DISTINCT name
Операція видалення дублювань досить дорого коштує, оскільки відношення підлягає попередньому сортуванню для визначення, чи треба видаляти кортеж. Зазвичай сортування відношення відбувається у багато разів довше, ніж виконання запиту без сортування. В той же час рішення задачі прикладу 5.2 з використанням підзапитів не призводить до дублювання.