powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL и XML
3 сообщений из 3, страница 1 из 1
PostgreSQL и XML
    #35172981
rkorotovskikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем, такая ситуация:
Есть таблица - t_books(id serial, xmldata xml) строк около 350тыс.
Всего таблица занимает около 500 Мб.
Мне нужно по выражению xpath выбрать узлы:
делаю так: "SELECT id FROM xpath_table('id','xmldata','t_books','/book/info/@name','true')
as t(id int4,"info" text)
WHERE Upper(t."fam") = Upper('Delphi')"
Все бы хорошо, но он выполняется около 5 минут! Это слишком много для моей задачи.

Понятно, что нужно ввести индекс. Нашел только этот вариант:"create index t_books_idx on t_books using btree (
((xpath('/book/info/@name', xmldata))[0]::text)
);
" Индекс создался, но оказалось, что рано радовался - поиск длится так же около 5-6 минут. Как я понимаю индекс Postgresql не использует.
Как решить данную проблему, посоветуйте, очень нужно. В базах данных я новичок, посоветуйте как быть.

Всех заранее благодарю!
...
Рейтинг: 0 / 0
PostgreSQL и XML
    #35173000
rkorotovskikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить:
В каждой строке находится один узел - одна книга.
Мне нужно отобрать строки(узлы), по xpath.
Менять таблицу не могу - это в моем случае единственный вариант - данные приходят только в виде xml.
...
Рейтинг: 0 / 0
PostgreSQL и XML
    #35176188
x3x3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуй индекс сделать не на поле а на Upper(поле) . как в запросе
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PostgreSQL и XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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