/ / SQL ОПТИМИЗАЦИЯ ЗА СЪБИРАНЕ - sql, алгоритъм, присъединяване, оптимизация

SQL ОПТИМИЗАЦИЯ НА СЪЕДИНЕНИЕТО - sql, алгоритъм, присъединяване, оптимизация

Аз работя върху един генерализиран проблем, където съм дадена само схеми определение на множество таблици, които имам.

Сега трябва да извличам някои колони, като се присъединя към множество таблици, така че броят на съединенията да бъде сведен до минимум.

Пример: Да предположим, че имам 3 маси и тук е списъкът на колоните, които имат.

Таблица 1: (1,2,3,4,5), Таблица 2: (5,6,7), Таблица 3: (5,6,7,8)

Сега предполагам, че имам заявка, в която искам всички колони 1,2,3,4,5,6,7,8.

Сега мога да се присъединя или към тях таблица 1, таблица 2 и таблица 3 ИЛИ таблица 1 и таблица 3. Ще получа необходимата информация и в двата случая, но присъединяването към таблица 1 и таблица 3 ще изисква само 1 присъединяване, вместо 2 присъединяване в друг случай.

Това, което се опитвах, беше алчен алтруим, в койтопърво бих помислил за таблица, която има максимален брой необходими колони, след което елиминира общите колони между заявката и таблицата (както от заявката, така и от таблицата) и след това разгледа актуализираните необходими колони и таблици за актуализиране и т.н.Но предполагам, че това ще бъде бавно.

Така че има генерализиран алгоритъм или ако някой може да ми даде някакъв намек в тази посока?

Отговори:

0 за отговор № 1

на първо място, трябва да спомена, че не е така"се присъедини", но "съюз". След това трябва да отбележа, че ако искате да използвате алчния алтруим, трябва първо да се присъедините към 2-те най-къси, защото когато се присъедините към таблица 2 пъти, то ще бъде от o (n), така че ще имате 2n операции да направя, така че би било по-добре, ако n е възможно по-малък. Освен тях може да ви бъде полезна и следната връзка: Сливане на 3 таблици / заявки с помощта на MS Access Union Query