|
|
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
Elic, Ага, спасибо, отличное решение, помню его и про NLS-зависимость. В моих тестах при binary и практическом отсутствии повторов на миллионе, оно самое быстрое: 1. Elapsed: 00:00:35.62 Код: plsql 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. 2. Elapsed: 00:00:11.29 Код: plsql 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. Elic. Elapsed: 00:00:09.67 Код: plsql 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. PS. Генератор в моем первом решении съедает практически все время... Модератор: Вложение удалено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 09:29 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
Fogel я так и не понял, почему до сих пор не выяснили, А1 и А2 - это числа или нет? ))) Код: plsql 1. 2. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 09:34 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
xtender Код: plsql 1. 2. Саян, я на Verification Code собаку съел. Cleanup располагается в конце скрипта, чтобы вернуть всё к состоянию, как будто его (скрипта) здесь не было. Просьба учесть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 10:39 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
StaxFogelя так и не понял, почему до сих пор не выяснили, А1 и А2 - это числа или нет? ))) Код: plsql 1. 2. ..... stax Stax, это был стёб по наблюдению обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 11:53 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
xtenderandrey_anonymousВ телекоме коды ABC/DEF именно таковы. Я на них в свое время "собаку съел", решая задачу эффективной привязки зоны к номеру по наиболее полному соответствию.кстати, да, очень интересная и полезная задачка. Я уже тут видел похожие топики и даже что-то решал, но сейчас что-то не осилил поиском найти твои... Может отдельный топик создашь про нее со своими решениями? Туда и другие варианты накидаем :) Я уже в другой области работаю, искать исходники лень. Решение Виталия - очень эффективно для одиночных поисков. Для _массовой привязки (десятки-сотни миллионов звонков) я либо преобразовывал входящую таблицу префиксов (чуть-чуть более толстую, чем в примерах и с учетом истории изменений , что вообще никто не показывает на форумах :) ) для привязки по равенству, либо - через похожее преобразование, но без нормализации длины префикса загонял в индексированную pl/sql таблицу и привязку делал в pipelined (через .prior()) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:47 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
xtender, Код: plsql 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. Функция phone_pkg.get_code взята у меня из книги. When PL/SQL is better than vanilla SQL (стр 133) Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 00:36 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, Я попытался сделать как у меня, т.е. чтобы можно было приджойнить поля из PREFIXES. Но как-то долго вышло... Я что-то сделал не так? Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 01:07 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
xtender, От соединения надо уходить, descr можно засунуть в ассоциативный массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 01:11 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshop, добавил в твой пакет еще функцию с возвратом max_length, чтобы уменшить кол-во вызова за счет кэширования deterministic и получилось дико быстро ~ 3.5 сек: Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 01:12 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopxtender, От соединения надо уходить, descr можно засунуть в ассоциативный массив.просто как-то неожиданно долго стало, хотя там был HJ: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 01:14 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
А вообще по теме кэширования: да, там действительно дикий оверхэд у result_cache - у меня всегда получалось, что ручной кэш в пакетных переменных намного быстрее. В ПСБ когда у меня была проблема еще и с непонятной инвалидацией, я даже сделал замороченный пакет в котором использовал и result_cache, и пакетные переменные: 1) была простая функция с result_cache чисто для инвалидации/сброса пакетных переменных 2) сами кэшируемые данные были в пакетных переменных, при инвалидации result_cache, вызывалась функция пересбора кэша ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 01:19 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
ElicPL SQL НовичокТимлид сказал, что в этом селекте я допустил грубую ошибку, так как здесь идёт неявное преобразование строки в числоГрубую ошибку сделал архитектор. Само по себе неявное преобразование не так страшно. Но в данном случае RECEIPT преобразуется к числу и как следствие: 1) не может быть использован индекс; 2) если где-то в RECEIPT есть нечисло, то запрос всегда будет падать. Это всё следствие быдлоархитектуры, но со вторым можно бороться. Не факт что архитектор сделал грубую ошибку. Возможно это сознательное решение, связанное с особенностями генерации номера чека, призванное предотвратить обработку номеров как чисел. Например, он хотел этим сказать следующее: если вам нужно выбрать чеки выданные между двумя другими то даже не думайте искать по соответствию номеров. Ищите только по дате выдачи чека. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:21 |
|
||
|
Число хранится как текст. Как написать выборку с использованием between?
|
|||
|---|---|---|---|
|
#18+
xtenderА вообще по теме кэширования: да, там действительно дикий оверхэд у result_cache - у меня всегда получалось, что ручной кэш в пакетных переменных намного быстрее. Это до тех пор, пока данные в uga помещаются, дальше сложнее. Я когда-то из спортивного интереса даже реализовал алгоритм ARC на PL/SQL, но невозможность отделить сам алгоритм от данных делает идею нерентабельной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:23 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39538443&tid=1885079]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 505ms |

| 0 / 0 |
