|
|
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
Уважаемые форумчане, подскажите как решить следующую задачу. Есть таблица: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Заполнена записями: Код: sql 1. 2. 3. 4. Надо найти те записи в которых отсутствует тег <bbb> Я нашел два способа: Код: sql 1. 2. 3. 4. Но работает долго. Итого: 1. Помогите создать индекс который бы использовался для данного поиска? 2. Может есть какие-то более правильные (красивые) способы добиться нужного результата? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2014, 15:43:32 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
Обработка XML всегда трудоемкая операция и я думаю, что никакие индексы на помогут (хотя могу ошибаться). Для вашей задачи регулярные выражения должны ускорить поиск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 09:52:35 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
terc, если поиск именно по условию отсутствия именно bbb частая - сделайте функциональный или условные индексы именно по этой ф-ии. если это частный случай поисков "по тегам"-- то ответ может быть где-то в области полнотекстового поиска и т.п. неочевидных фич. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 10:42:12 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
big-trot, Если создать индекс по значению тега <aaa> и искать по этому значению, то скорость равна поиску по индексированному полю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 11:23:37 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
qwwqterc, если поиск именно по условию отсутствия именно bbb частая - сделайте функциональный или условные индексы именно по этой ф-ии. если это частный случай поисков "по тегам"-- то ответ может быть где-то в области полнотекстового поиска и т.п. неочевидных фич. Не подскажите как сделать "функциональный или условный индекс именно по этой ф-ии" Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 11:25:04 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
terc <> Не подскажите как сделать "функциональный или условный индекс именно по этой ф-ии" Спасибо! http://www.postgresql.org/docs/current/static/sql-commands.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 13:23:49 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
qwwq, Спасибо! Для варианта: Код: sql 1. 2. Создал функциональный индекс: Код: sql 1. 2. 3. 4. и условный: Код: sql 1. 2. 3. 4. 5. Срабатывает условный (idx2) - время запроса уменьшилось, функциональный (idx1) не срабатывает. Интересно, почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2014, 17:05:47 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
tercИнтересно, почему?Потому что он меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 10:43:32 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
Гость_0, Я пробовал их по очереди, а не два одновременно. И функциональный не срабатывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 17:54:59 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
tercГость_0, Я пробовал их по очереди, а не два одновременно. И функциональный не срабатывает. 1)попробуйте сделатьс функциональным индексом set seq_scan to 0; explain analyze SELECT * from testxml where (xpath_exists('/eee/bbb', doc)) = 'f'; и пришлите результат... без этого можно только гадать... а да и результаты (тоже с этим проблемным индексом) для запросов: explain analyze select count(*) from testxml; и explain analyze select count(*) from testxml where (xpath_exists('/eee/bbb', doc)) = 'f'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 18:00:30 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
terc, после создания индекса не сделали Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2014, 18:26:23 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Для функционального индекса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Ёш, Да сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 16:57:09 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Прочитал Ваше предложение и у меня к Вам ответное предложение=) Не так давно в сети интернет появился новый интернет-портал, который на данный момент наполняется контентом. На портале можно онлайн проконсультироваться по разным вопросам (ИТ, юриспруденция, бизнес прочее), выставлять задания и проекты для выполнения, а также продавать или покупать продукты интеллектуального труда в магазине (дипломы, рефераты, программы прочее). В связи с тем, что ресурс находится на стадии наполнения контентом, я хотела бы предложить Вам разместить вышеуказанное объявление у нас на сайте. Это Вам ровным счетом стоить не будет. Если Вам интересно, то объявление будет размещено здесь http://www.outwork.net.ua/ Жду Вашего ответа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 16:58:46 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Прочитал Ваше предложение и у меня к Вам ответное предложение=) Не так давно в сети интернет появился новый интернет-портал, который на данный момент наполняется контентом. На портале можно онлайн проконсультироваться по разным вопросам (ИТ, юриспруденция, бизнес прочее), выставлять задания и проекты для выполнения, а также продавать или покупать продукты интеллектуального труда в магазине (дипломы, рефераты, программы прочее). В связи с тем, что ресурс находится на стадии наполнения контентом, я хотела бы предложить Вам разместить вышеуказанное объявление у нас на сайте. Это Вам ровным счетом стоить не будет. Если Вам интересно, то объявление будет размещено здесь http://www.outwork.net.ua/ Жду Вашего ответа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2014, 17:02:10 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
Гость_0, Я пробовал их по очереди, а не два одновременно. И функциональный не срабатывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2014, 07:01:34 |
|
||
|
поиск по xml-полям
|
|||
|---|---|---|---|
|
#18+
terc, Как вы видите ваш индекс может использоваться в запросах. Просто база по своей статистике видит что под условие попадает 50% строк в таблице и считает что seq scan в таком случае будет быстрее (и в среднем она была бы даже права но xpath_exists операция очень дорогая). Тоесть проблема тут не в индексе а в распределении данных на которых вы тестируете. Попробуйте потестировать когда под условие "Надо найти те записи в которых отсутствует тег <bbb>" попадает не половина строк а 1%... скорее всего функциональный индекс будет использован автоматически. Если же вам надо принудительно использовать функциональный индекс на 50% попаданий - попробуйте поиграть с настройками random_page_cost в базе в стороно уменьшения (но как вы видите особо ускорения оно не дает). --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2014, 10:26:12 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38707030&tid=1998558]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 502ms |

| 0 / 0 |
