powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / IF NOT EXISTS и ISOLATION READ UNCOMMITTED
4 сообщений из 4, страница 1 из 1
IF NOT EXISTS и ISOLATION READ UNCOMMITTED
    #34572663
akula84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что оптимальнее использовать при написании запроса

1.
IF NOT EXISTS(
select * from where .....
)
BEGIN
...
END

или
2.

select @VAR = 0
select @VAR = ...
from table
where .....
AT ISOLATION READ UNCOMMITTED

IF VAR = 0
BEGIN
....
END

Блокируются ли в первом случае строки таблицы?

Заранее спасибо за помощь
...
Рейтинг: 0 / 0
IF NOT EXISTS и ISOLATION READ UNCOMMITTED
    #34573240
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akula84 пишет:
> Что оптимальнее использовать при написании запроса
> IF NOT EXISTS(
> select * from where .....
> )
или
> select @VAR = 0
> select @VAR = ...
> from table
> where .....
> AT ISOLATION READ UNCOMMITTED

Если убрать во втором случае AT ISOLATION READ UNCOMMITTED
(или поставить в первом), то будет одно и то же.
NOT EXISTS - короче, неправда ли ?

А с и без AT ISOLATION READ UNCOMMITTED - это немного
разные вещи.

Совет: не используйте READ UNCOMMITTED в ASE.

> Блокируются ли в первом случае строки таблицы?

Так они и во втором блокируются. Только такой блокировкой,
которая совместима с XLOCK.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
IF NOT EXISTS и ISOLATION READ UNCOMMITTED
    #34589411
Maadox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akula84Что оптимальнее использовать при написании запроса

1.
IF NOT EXISTS(
select * from where .....
)
BEGIN
...
END

или
2.

select @VAR = 0
select @VAR = ...
from table
where .....
AT ISOLATION READ UNCOMMITTED

IF VAR = 0
BEGIN
....
END

Блокируются ли в первом случае строки таблицы?

Заранее спасибо за помощь

1. Это разные запросы и будучи запущены одновременно могут выдать разные результаты. см. уровни изоляции.
2. Блокировка чтения накладывается в обоих случаях. Отлиичие только в том, что во втором случае она наложиться при наличии экслюзивной блокировки, а в первом будет ждать окончания транзакции наловшей эксклюзиную.
3. Если выборка возвращает более одной записи, то второй запрос обратится к большему количеству данных, а соответсвенно будет работать медленнеее. Начиная с версии 12.5.4 эта "ошибка" исправлена, и производительности равны. В более младших версиях эту "ошибку" можно решить поставив перед вторым запросом set rowcount 1, а после него set rowcount 0.
...
Рейтинг: 0 / 0
IF NOT EXISTS и ISOLATION READ UNCOMMITTED
    #34589427
Maadox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Если убрать во втором случае AT ISOLATION READ UNCOMMITTED
(или поставить в первом), то будет одно и то же.
NOT EXISTS - короче, неправда ли ?

Код: plaintext
if exists(select  1  from sysobjects at isolation read uncommitted)
Incorrect syntax near the keyword 'AT ISOLATION'

ASE 12.5.3
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / IF NOT EXISTS и ISOLATION READ UNCOMMITTED
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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