|
Тема |
Re: По принцип има [re: wqw] |
|
Автор |
TPECKATA (втрещен) |
|
Публикувано | 03.04.07 16:12 |
|
|
Така, отвори дебелите книги за кой да е СБД (MS SQL, Oracle, Postgre SQL) и ще видиш, че условията в JOIN имат приоритет пред условията в WHERE.
Т.е. JOIN-а се извършва винаги преди да се проверят WHERE условията.
Пределно ми е ясно че MS SQL Server (а вероятно и други СБД) си прави execution plan преди да почне да обработва дадена SQL заявка.
Да, също така знам, че ANSI SQL е декларативен, но ако ще се заяждаме има и SQL разширения които малко или много започват да се различават от дефиницията за декларативен език.
Прочети ми мнението още веднъж и виж, че съм казал, че някои СБД могат да оптимизират Cross Join заявки, и това което съм написал е "по принцип", т.е. разбирай на теория, според това което пише по разни книги за SQL.
Поздрави
П.П. Ще ти препоръчам да прочетеш
където е правен практически тест, и наистина няма съществена разлика в бързодействието и е казано
the SQL Server does a wonderful job of optimizing the statements prior to execution
И един друг пример, в които се вижда разликата между условията след where и след ON клаузите:
The WHERE clause acts on the results after the JOIN has been completed
Ако ти се занимава пробвай да видиш какво е бързодействието при реализация на (таблица самa към себе си) с INNER JOIN и с CROSS JOIN.
В Интернете много психов,
Каждый пятый - это псих.
Говори со мною тихо,
Может я один из нихРедактирано от TPECKATA на 03.04.07 17:03.
|
| |
|
|
|