Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE: что быстрее T-SQL или ANSI / 10 сообщений из 10, страница 1 из 1
22.10.2009, 00:55
    #36265681
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
Господа, такой вопрос - кто-нибудь сталкивался с зависимостью производительности от стандарта кодирования - старый SQL (когда таблицы после from через запятую перечислялись, а условия из соединения были в where) против ANSI (джойны отдельно от where).

Слышал, что ANSI в каких-то случаях может давать значительный выигрыш в производительности по сравнению со старым синтаксисом для совершенно идентичных запросов.

Ничего вразумительного в google найти не удалось.

Помогите понять, как может производительность зависеть от нотации и тоже, такая зависимость это норма или просто багафича известная продвинутым в оптимизации спецам?


Заранее спасибо
...
Рейтинг: 0 / 0
22.10.2009, 12:41
    #36266580
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
когда таблицы через запятую то это тоже самое что и inner join.
Напишите два эквивалентных запроса и посмотрите на их планы.
Запрос c join легче читать и понимать.
...
Рейтинг: 0 / 0
22.10.2009, 15:56
    #36267325
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
Kru wrote:

Господа, такой вопрос - кто-нибудь сталкивался с зависимостью
> производительности от стандарта кодирования - старый SQL (когда таблицы
> после from через запятую перечислялись, а условия из соединения были в
> where) против ANSI (джойны отдельно от where).

Производительность от этого напрямую не зависит.

Очень слабо оно зависит опосредовано, за счёт того, что сервак
может строить по-разному планы, но при этом, как мы наблюдали,
нет никакого отклонения в лучшую или худшую сторону.
Т.е. где -то -- старые глюки -- по-старому работает хуже.
Где-то новые глюки -- по- новому работает хуже.

>
> Слышал, что ANSI в каких-то случаях может давать значительный выигрыш в
> производительности по сравнению со старым синтаксисом для совершенно
> идентичных запросов.

Скорее всего, либо вообще туфта, либо какой-то частный случай,
и из него делается общий вывод.



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
22.10.2009, 19:31
    #36267817
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
Kruкто-нибудь сталкивался с зависимостью производительности от стандарта кодирования - старый SQL (когда таблицы после from через запятую перечислялись, а условия из соединения были в where) против ANSI (джойны отдельно от where).Да, я сталкивался.
В нормальных серверах от синтаксиса скорость работы обычно не зависит. Однако баги и особенности в парсерах-оптимизаторах могут вносить различия в план запроса в зависимости от его синтаксиса. Это нигде не документируется потому что это все эти различия идут из области багов и странностей кодирования парсеров и естественно могут меняться от EBF к EBF'у.

KruСлышал, что ANSI в каких-то случаях может давать значительный выигрыш в производительности по сравнению со старым синтаксисом для совершенно идентичных запросов.По идее, фильтрация участвующих в запросе таблиц при ANSI join происходит до фактического соединения таблиц поэтому в общем запрос получается быстрее.

Этот подход вполне успешно работает на микро-базах, тот же SQLite например или ODBC драйвера для xBase баз.
Синтаксис не должен влиять на производительность в ASE.
А например в SA, начиная с девятой версии напрямую заявляется что весь *= синтаксис неявно превращается оптимизатором в JOIN ON синтаксис перед выполнением.
...
Рейтинг: 0 / 0
23.10.2009, 10:50
    #36268310
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
White Owl wrote:

> По идее, фильтрация участвующих в запросе таблиц при ANSI join
> происходит до фактического соединения таблиц поэтому в общем запрос
> получается быстрее.

Это ты глупость сказал. В случае обоих синтаксисов фильтрация по
конкретной таблице может происходить либо до, либо после, либо во
время соединения таблиц.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
23.10.2009, 13:56
    #36269068
cherrex_Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
MasterZiv Это ты глупость сказал. В случае обоих синтаксисов фильтрация по
конкретной таблице может происходить либо до, либо после, либо во
время соединения таблиц.

а это можно контролировать, или это ответственность оптимизатора?
...
Рейтинг: 0 / 0
23.10.2009, 17:46
    #36269825
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
MasterZivЭто ты глупость сказал. В случае обоих синтаксисов фильтрация по
конкретной таблице может происходить либо до, либо после, либо во
время соединения таблиц.Я сказал не глупость, а "по идее". Насколько я помню, это было официальное обоснование когда вводили "JOIN ON" синтаксис.
А на практике, как я уже говорил, это происходит до сих пор на микробазах. А на ASE это может происходить в зависимости от ветра на Марсе.
Вон, весной у меня были пляски с этим бубном: http://sql.ru/forum/actualthread.aspx?tid=638860#6981134
...
Рейтинг: 0 / 0
23.10.2009, 17:48
    #36269828
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
cherrex_DenMasterZiv Это ты глупость сказал. В случае обоих синтаксисов фильтрация по
конкретной таблице может происходить либо до, либо после, либо во
время соединения таблиц.а это можно контролировать, или это ответственность оптимизатора?Нет, конкретно этот пункт контролировать нельзя.
Оптимизатор можно контролировать только через посредство сохраненных планов. Но там может быть уже вообще что угодно.
...
Рейтинг: 0 / 0
23.10.2009, 18:13
    #36269867
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
cherrex_Den wrote:
> а это можно контролировать, или это ответственность оптимизатора?

Ответственность оптимизатора, но можно контролировать отчасти
хинтами и абстрактными планами.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
23.10.2009, 18:18
    #36269875
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: что быстрее T-SQL или ANSI
White Owl wrote:

> Я сказал не глупость, а "по идее". Насколько я помню, это было
> официальное обоснование когда вводили "JOIN ON" синтаксис.

Нет, ты перепутал немного.

Обоснование было о том, что при внешних соединениях
семантика ссылок на атрибуты внутренних таблиц во внешних
JOIN-ах не определена в варианте синтаксиса без ANSI JOIN.
А в ANSI JOIN всё предельно ясно: в JOIN ... ON это поля
ДО JOIN-а, а в where -- поля после.

Но это к порядку физического выполнения операций
напрямую не имеет отношения.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE: что быстрее T-SQL или ANSI / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]