|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
Уважаемые коллеги, приветствую! Помогите ускорить выборку из xml! Сам xml - предельно прост: Код: 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. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
Проблема в том, что в типовом хмл - порядка 1-2 миллионов <row>. И его отработка длится минут 10-15. Нельзя ли хоть как-то подсакратить? @inp - это входящий параметр хранимки. Что-нибудь можно сделать? По частям распарсить, я не знаю, в поле временной таблицы засунуть, и индекс построить, как типизированный хмл объявить, хоть что-нибудь, я не знаю. Подскажите, дайте пример, пожалуйста! Хочется ускорения раз в 10. Но буду рад, если хоть как-то... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 16:57 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
uaggster, А вам это надо в БД делать? Вообще есть вещи типа XSLT или LinqToXml. При делании их можно засунуть в CLR. Предкомпилированный Xslt довольно быстро может парзить. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 17:03 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
uaggster, ETL задачи надо решать внешними средствами. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 17:11 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
a_voronin, это жуткое легаси, на самом деле. Они так параметры для выборки передают, табличные. Только вначале речь шла о паре сотен - тысяче записей, а потом постепенно доросло до миллионов, и теперь уперлось в порог, когда хранимка валится по таймауту, причем сам таймаут увеличить нельзя, он где-то в дебрях сервера приложений зарыт. Нужно срочно что-то закостылить, чтобы хоть как-то работало. Так что да, в базе. По куче соображений бюрократического и не переводимого на русский (кроме матерного) характера. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 17:13 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
uaggster, Попробуйте OPENXML. Или https://docs.microsoft.com/ru-ru/sql/relational-databases/sqlxml-annotated-xsd-schemas-xpath-queries/bulk-load-xml/performing-bulk-load-of-xml-data-sqlxml-4-0?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 17:15 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
invm, да, через Openxml - в 1,5 раза быстрее получается, почти в два. Не совсем то, что хотелось, но хоть что-то! Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 17:54 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
uaggster, Код: 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. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87.
Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 18:36 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
uaggster Хочется ускорения раз в 10. Но буду рад, если хоть как-то... sqlXmlBulkLoad ЗЫ. Потоковые парсеры XML раз в сто быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 19:03 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
Да, если на входе xml-файл, то через bulkload можно. Будет в 10 раз быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2020, 22:49 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
Megabyte, в том то и дело, что это входной параметр хранимой процедуры. Теоретически, его можно сохранить в filetable, а потом натравить на него парсер, а потом парсить в динамически созданную постоянную таблицу, но это хардкор, я б сказал! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 05:48 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
uaggster Megabyte, в том то и дело, что это входной параметр хранимой процедуры. Теоретически, его можно сохранить в filetable, а потом натравить на него парсер, а потом парсить в динамически созданную постоянную таблицу, но это хардкор, я б сказал! sqlXmlBulkLoad сам может создать все таблицы. Например, в tempdb. Схема только нужна. Работать он может не с файла, а с потока, в том числе и с потока из базы. AdoDB.Stream. Все DOM-парсеры отдыхают. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 13:27 |
|
Можно ли ускорить выборку из xml?
|
|||
---|---|---|---|
#18+
uaggster, filetable не очень хорошая тема, лучше сохраните параметр в глобальную временную таблицу, отгрузите ее в файл через xp_cmdshell bcp, затем примените sqlXmlBulkLoad. Но это всё равно для извращенцев. Лучше сразу из приложения отгружать в файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2020, 15:42 |
|
|
start [/forum/topic.php?fid=46&fpage=69&tid=1686487]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 152ms |
0 / 0 |