|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
имеются 2 таблицы person и person_arhiv в обоих есть поле лицевой счет lschet char(20) необходимо найти ближайший свободный номер лицевого счета которого нет ни в одной таблице делал хранимую процедуру так - но слишком медленно обрабатывает Код: 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.
Модератор: Пользуйтесь тегом SRC ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:27 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Hello, Edward K! You wrote on 1 декабря 2015 г. 11:28:55: Edward K> необходимо найти ближайший свободный номер лицевого счета которого нет ни в одной таблице нельзя найти то чего нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:28 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
так в цикле и гоняю проверку на наличие ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:30 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
при 8000 записях в одной и 8000 в другой, неиндексированные чтения достигают 30 000 000 в каждой таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:32 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Edward_K, представьте, что параллельно выполняющиеся транзакции из разных подключений (обычный multiuser) находят один и тот же свободный номер лицевого счета. Что произойдет? Как вариант - хранить все номера лицевых счетов в мастер-таблице с пометкой ('B'/'F' - занят/свободен). Если в таблице нет лицевых счетов с меткой 'F', то номер определяется через обычный генератор. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:44 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Edward_K, "do nothing=0;" Это кто так тебя научил? Пиши так: Код: sql 1.
Чтобы не было 30 млн. неиндексированных чтений, необходимо ... проиндексировать. А по коду - это полный песец, не хватает только дополнительного использования временных таблиц и динамически собираемых текстов запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:45 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
WildSery, прога старая поля текстовые с индексами вобще бред получаеться, firebird еще 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:51 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Edward_K, процедуру выкинуть на хрен ибо бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:53 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
WildSery, без do nothing=0; хранимая процедура в IBExpert не компилиться ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:54 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Симонов Денис, процедуру выкинуть не могу так как она вызываеться из основной программы(ни кто ее переписывать не будет) и выдает только одно значение lschet_new ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:56 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Edward_K, в первую очередь я бы вырвал руки проектировщику сией БД который разделил архивные и рабочие персоны по разным таблицам. ближайший обычно ищется как-то так Код: sql 1. 2. 3.
без всяких циклов. Соответственно на lschet лучше иметь DESC индекс ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:13 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Симонов Денис, ага, я бы вырвал тоже, менял lschet с чара на интеджер затем индексировал обработка сокращаеться с 2 минут до 2 милисекунд, но прога матюкаеться что не текстовое поле написано было еще лет 15 назад все.... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:24 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Симонов Денис, Код: plsql 1. 2. 3.
так тоже не есть гуд, остануться болтаться свободные номера в середине таблицы, так как лицевой назначался не автоматом к как то от балды - банк назначал раньше ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:29 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Симонов Денис, щас юзер сам присваивает лицевые - вот и надо выцеплять свободные ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:31 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Edward_Kно прога матюкаеться что не текстовое поле написано было еще лет 15 назад все.... Похоже, это очередной случай с решением через updatable view. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:50 |
|
Нужна помощь начинающему
|
|||
---|---|---|---|
#18+
Edward_K, после причёсывания должно быть что-то такое Код: 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.
вместо CAST(:I AS CHAR(15)) приведи к тому типу который у тебя задан для LSCHET может индекс начнёт подхватываться ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:55 |
|
|
start [/forum/topic.php?fid=40&msg=39117144&tid=1562479]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 262ms |
total: | 400ms |
0 / 0 |