|
Тема |
Re: По принцип има [re: TPECKATA] |
|
Автор |
wqw (АзСъмЖив) |
|
Публикувано | 03.04.07 15:12 |
|
|
Не знам дали осъзнаваш, че току що наговори куп неверни неща.
SQL като език е декларативен. Със SELECT описваш вида на крайния резултат, а не стъпките по които той да се получи. Повечето db engine-и след парсване на заявката я оптимизират с цел да генерират план (стъпка по стъпка) за изпълнение и оптимален достъп до данните. Точно тук всички твои хипотези как CROSS JOIN се изпълнявал първо, после се филтрирало отиват в канала по простата причина, че в SQL няма начин да укажеш последователността на стъпките за изпълнение на заявката.
Обикновено db engine-а отрязва от изпълнение всички глупости, които програмиста натворява (например JOIN с таблица, колони на която не присъстват в SELECT-а), "изтласква" всички предикати "нагоре" максимално близко до base таблицити и преглежда от кои индекси има файда (щото от повечето творения на родните DBA няма такава).
От тази гледна точка INNER JOIN е еквивалентен на CROSS JOIN със същия предикат в WHERE клаузата. Просто второто за мен е sql обфускация :-))
cheers,
</wqw>
|
| |
|
|
|