|
|
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
Господа, такой вопрос - кто-нибудь сталкивался с зависимостью производительности от стандарта кодирования - старый SQL (когда таблицы после from через запятую перечислялись, а условия из соединения были в where) против ANSI (джойны отдельно от where). Слышал, что ANSI в каких-то случаях может давать значительный выигрыш в производительности по сравнению со старым синтаксисом для совершенно идентичных запросов. Ничего вразумительного в google найти не удалось. Помогите понять, как может производительность зависеть от нотации и тоже, такая зависимость это норма или просто багафича известная продвинутым в оптимизации спецам? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2009, 00:55 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
когда таблицы через запятую то это тоже самое что и inner join. Напишите два эквивалентных запроса и посмотрите на их планы. Запрос c join легче читать и понимать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2009, 12:41 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
Kru wrote: Господа, такой вопрос - кто-нибудь сталкивался с зависимостью > производительности от стандарта кодирования - старый SQL (когда таблицы > после from через запятую перечислялись, а условия из соединения были в > where) против ANSI (джойны отдельно от where). Производительность от этого напрямую не зависит. Очень слабо оно зависит опосредовано, за счёт того, что сервак может строить по-разному планы, но при этом, как мы наблюдали, нет никакого отклонения в лучшую или худшую сторону. Т.е. где -то -- старые глюки -- по-старому работает хуже. Где-то новые глюки -- по- новому работает хуже. > > Слышал, что ANSI в каких-то случаях может давать значительный выигрыш в > производительности по сравнению со старым синтаксисом для совершенно > идентичных запросов. Скорее всего, либо вообще туфта, либо какой-то частный случай, и из него делается общий вывод. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2009, 15:56 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
Kruкто-нибудь сталкивался с зависимостью производительности от стандарта кодирования - старый SQL (когда таблицы после from через запятую перечислялись, а условия из соединения были в where) против ANSI (джойны отдельно от where).Да, я сталкивался. В нормальных серверах от синтаксиса скорость работы обычно не зависит. Однако баги и особенности в парсерах-оптимизаторах могут вносить различия в план запроса в зависимости от его синтаксиса. Это нигде не документируется потому что это все эти различия идут из области багов и странностей кодирования парсеров и естественно могут меняться от EBF к EBF'у. KruСлышал, что ANSI в каких-то случаях может давать значительный выигрыш в производительности по сравнению со старым синтаксисом для совершенно идентичных запросов.По идее, фильтрация участвующих в запросе таблиц при ANSI join происходит до фактического соединения таблиц поэтому в общем запрос получается быстрее. Этот подход вполне успешно работает на микро-базах, тот же SQLite например или ODBC драйвера для xBase баз. Синтаксис не должен влиять на производительность в ASE. А например в SA, начиная с девятой версии напрямую заявляется что весь *= синтаксис неявно превращается оптимизатором в JOIN ON синтаксис перед выполнением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2009, 19:31 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > По идее, фильтрация участвующих в запросе таблиц при ANSI join > происходит до фактического соединения таблиц поэтому в общем запрос > получается быстрее. Это ты глупость сказал. В случае обоих синтаксисов фильтрация по конкретной таблице может происходить либо до, либо после, либо во время соединения таблиц. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 10:50 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
MasterZiv Это ты глупость сказал. В случае обоих синтаксисов фильтрация по конкретной таблице может происходить либо до, либо после, либо во время соединения таблиц. а это можно контролировать, или это ответственность оптимизатора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 13:56 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто ты глупость сказал. В случае обоих синтаксисов фильтрация по конкретной таблице может происходить либо до, либо после, либо во время соединения таблиц.Я сказал не глупость, а "по идее". Насколько я помню, это было официальное обоснование когда вводили "JOIN ON" синтаксис. А на практике, как я уже говорил, это происходит до сих пор на микробазах. А на ASE это может происходить в зависимости от ветра на Марсе. Вон, весной у меня были пляски с этим бубном: http://sql.ru/forum/actualthread.aspx?tid=638860#6981134 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 17:46 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
cherrex_DenMasterZiv Это ты глупость сказал. В случае обоих синтаксисов фильтрация по конкретной таблице может происходить либо до, либо после, либо во время соединения таблиц.а это можно контролировать, или это ответственность оптимизатора?Нет, конкретно этот пункт контролировать нельзя. Оптимизатор можно контролировать только через посредство сохраненных планов. Но там может быть уже вообще что угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 17:48 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > а это можно контролировать, или это ответственность оптимизатора? Ответственность оптимизатора, но можно контролировать отчасти хинтами и абстрактными планами. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 18:13 |
|
||
|
ASE: что быстрее T-SQL или ANSI
|
|||
|---|---|---|---|
|
#18+
White Owl wrote: > Я сказал не глупость, а "по идее". Насколько я помню, это было > официальное обоснование когда вводили "JOIN ON" синтаксис. Нет, ты перепутал немного. Обоснование было о том, что при внешних соединениях семантика ссылок на атрибуты внутренних таблиц во внешних JOIN-ах не определена в варианте синтаксиса без ANSI JOIN. А в ANSI JOIN всё предельно ясно: в JOIN ... ON это поля ДО JOIN-а, а в where -- поля после. Но это к порядку физического выполнения операций напрямую не имеет отношения. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2009, 18:18 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=36265681&tid=2010857]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
159ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 269ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...