|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
Maxim BogukРолг Хупинпропущено... не буду "не всегда" будет правильным. нет гарантии, что будет правильным Приведите пример где оно МОЖЕТ теоретически дать неверный ответ. ;) Благо это самое стандартное преобразование для union all из тех что я знаю для ускорения. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Ну, напримери, вы выше писали 1. писать запросы руками и вставлять limit 10 в обе части union all 2. затем приводили пример: select * from (select ... LIMIT [offset+limit] ) UNION ALL (select ... LIMIT [offset+limit] ) ORDER BY ... OFFSET offset LIMIT limit; Например, если не будет одинаковой сортировки в подзапросах в этом случае возможно проявится проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 14:03 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
Maxim Boguk, авторБлаго это самое стандартное преобразование для union all из тех что я знаю для ускорения. приведите плиз пример как преобразовать UNION ALL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 14:31 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
Ролг ХупинMaxim Bogukпропущено... Приведите пример где оно МОЖЕТ теоретически дать неверный ответ. ;) Благо это самое стандартное преобразование для union all из тех что я знаю для ускорения. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru Ну, напримери, вы выше писали 1. писать запросы руками и вставлять limit 10 в обе части union all 2. затем приводили пример: select * from (select ... LIMIT [offset+limit] ) UNION ALL (select ... LIMIT [offset+limit] ) ORDER BY ... OFFSET offset LIMIT limit; Например, если не будет одинаковой сортировки в подзапросах в этом случае возможно проявится проблема А ORDER BY в подзапросах на что? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 14:41 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
vyegorovqwwq, А можете предоставить скрипты для вашей таблицы `t_t`? чтобы был самодостаточный демонстрационный пример? табличка модельная, отсюда : 20003776 добавлены индексы по fld на все партиции и головную. (без паттернопсов) и вставлено дважды по 100000 поверх тех 1000, что было в. (итого -- по 100500 на партицию.) генератором серий. // в fld ~ g % 500 ? кажется если хотите всё в одном месте -- чуть позже соберу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 16:04 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
Maxim BogukРолг Хупинпропущено... Ну, напримери, вы выше писали 1. писать запросы руками и вставлять limit 10 в обе части union all 2. затем приводили пример: select * from (select ... LIMIT [offset+limit] ) UNION ALL (select ... LIMIT [offset+limit] ) ORDER BY ... OFFSET offset LIMIT limit; Например, если не будет одинаковой сортировки в подзапросах в этом случае возможно проявится проблема А ORDER BY в подзапросах на что? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru см. выше, вы о них не писали, вот и я сделал примечание. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 16:52 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
vyegorov, из 19757774 create and data Код: 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.
merge append not nullable if not nullable Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: 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.
merge append nullable Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: 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. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104.
и тд. можно случай лягушки префикс сорта == префиксу инд-а или составной nullable префикс сорта == индексу расписать всё так же сильно не хватает операторов сравнения в смысле отношения порядка при сортировке для упрощения записи сравнения. (симметричного "IS" вместо = и т.п.) "IS DISTINCT FROM" не оператор. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 21:50 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
qwwq, Очень полезный пост, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 22:04 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
qwwq, "Хм! Грех невелик, зато мудрость какова!" PS: Действительно интересное решение. Более того пригодное для использования не для партиционирования а для ускорения запросов с ORDER BY a,b при наличии индекса только по а. Записал себе в копилку. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 22:34 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
Maxim Boguk,qwwq авторДействительно интересное решение. ORDER BY a,b при наличии индекса только по а. Записал себе в копилку. тоже записал в копилку кстати решение полезно если даже есть индекс a,b а сортировку надо такую a desc, b или а, b desc только остается разобраться как desc сортировку использовать в способе qwwq -) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 09:33 |
|
оптимизация limit по union all (когда лимит нельзя перенести в подзапрос)
|
|||
---|---|---|---|
#18+
Legushka, это всё работа планировщика то что такую алгоритмическую мелочь приходится писать руками -- показатель "продвинутости" планировщика а для хенджоба и ручечек наружу торчит маловато, не говоря о пресловутых "текстпаттернопсах", у которых теоретически внутри порядок свой (отличный от) есть, но наружу его не отдадут. козлы ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2017, 09:51 |
|
|
start [/forum/topic.php?fid=53&msg=39521392&tid=1996227]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
147ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 307ms |
total: | 540ms |
0 / 0 |