powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проверка на null геометрии
15 сообщений из 15, страница 1 из 1
Проверка на null геометрии
    #39678022
Добрый день.

Обнаружил такую особенность.

Имеется таблица с полем типа "MDSYS.SDO_GEOMETRY"

В таблице 10 ки тысяч записей. Некоторые записи имеют сложную геометрию.

Запрос

Код: plsql
1.
 select (case when (GEOM_OBJ is null) then 0 else 1 end) from GEOM_TABLE 



Отрабатывает очень долго. Как будь-то объект полностью "загружается" при запросе.

Проверено на:

Oracle Database 10g Release 10.2.0.5.0;
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0.
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39678094
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Григорий Поверенный,

А более гуманные способы nvl2, decode ... работают быстрее?
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39678144
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Григорий Поверенный,

возможно имеет смысл дежжать статусную is_present char(1) 'Y'/'N'. ТОгда вообще по индексу сможете искать.
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39678678
MaximaXXLГригорий Поверенный,

А более гуманные способы nvl2, decode ... работают быстрее?

Нет к сожалению...
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39678679
JonhsonГригорий Поверенный,

возможно имеет смысл дежжать статусную is_present char(1) 'Y'/'N'. ТОгда вообще по индексу сможете искать.

Скорее придётся так и сделать. А триггером обрабатывать.
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39678725
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Григорий Поверенный,

А что вы пытаетесь этим сделать? Если проверку в обычный WHERE вынести, то работает быстрее?
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39678727
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и попробуйте подсунуть ему хинт /* +FIRST_ROWS */
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39679422
Alexander RyndinГригорий Поверенный,

А что вы пытаетесь этим сделать? Если проверку в обычный WHERE вынести, то работает быстрее?


Мне нужно просто выводить, есть ли геометрия у объекта или есть.
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39679424
[quot Григорий Поверенный]Alexander RyndinГригорий Поверенный,

Мне нужно просто выводить, есть ли геометрия у объекта или НЕТ.
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39679448
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что нибудь типа такого не быстрее будет работать?
Код: plsql
1.
2.
3.
select 0 from GEOM_TABLE  where GEOM_OBJ is null
union all
select 1 from GEOM_TABLE  where GEOM_OBJ is not null


Ну так, в плане эксперимента
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39680841
Сделал такой под запрос для поля.

Код: sql
1.
Select ID,(select (case count(*) when 0 then 0 else 1 end) from TABLE g where not GEOM_OBJ is null and TABLE.id = g.ID) GeometryExists From TABLE Order By ID



Всё отлично работает.
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39680904
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Григорий Поверенный,

Мне кажется: (case count(*) when 0 then 0 else 1 end) эквивалентна sign(count(*))
Ну и я бы поставил скобки к not, так будет более читабельно и если кто-то решит дописать условие то обратит внимание
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39680909
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLМне кажется:
а может там TABLE.id уникальный
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39680915
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййMaximaXXLМне кажется:
а может там TABLE.id уникальный


тогда хватит и count(*), но мне кажеться sign() операция легче чем case, а делает то-же самое в конкретном примере.
...
Рейтинг: 0 / 0
Проверка на null геометрии
    #39681645
MaximaXXLтогда хватит и count(*), но мне кажется sign() операция легче чем case, а делает то-же самое в конкретном примере.


Спасибо, буду знать:-)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проверка на null геометрии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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