Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проверка на null геометрии / 15 сообщений из 15, страница 1 из 1
24.07.2018, 07:13
    #39678022
Проверка на null геометрии
Добрый день.

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

Имеется таблица с полем типа "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
24.07.2018, 10:20
    #39678094
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на null геометрии
Григорий Поверенный,

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

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

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

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

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

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

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

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


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

Мне нужно просто выводить, есть ли геометрия у объекта или НЕТ.
...
Рейтинг: 0 / 0
26.07.2018, 10:28
    #39679448
Alexander Ryndin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на null геометрии
Что нибудь типа такого не быстрее будет работать?
Код: 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
30.07.2018, 08:17
    #39680841
Проверка на null геометрии
Сделал такой под запрос для поля.

Код: 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
30.07.2018, 10:46
    #39680904
MaximaXXL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка на null геометрии
Григорий Поверенный,

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


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


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


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