|
|
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
У меня в проекте очень часто вызывается одна хранимая процедура. Все работает уже очень давно, но я решил сейчас её хоть как-нибудь оптимизировать по производительности. Эта процедура резервирования товара. Она прежде всего работает с двумя относительно не большими таблицами: Rezerved (7000записей)-резервы и несколько большей Ost(200000) записей. Записи в обоих таблицах очень часто меняются множеством пользователей одновременно в рамках транзакции на запись каждого документа. Она работает в 2-х режимах 1)В Rezerved больше чем в Ost. Нужно убрать резерв. В этом случае делается курсор по некоторым записям Rezerved (которые для данного товара и для данного магазина) Количество записей всегда >0, но практически в 99.999999% случаях очень мало, < 5. В среднем где-то 80% только 1 запись. Мы проходим по этому курсору и делаем UPDATE или DELETE записям ID которых нам дает этот курсор. Процедура работала уже лет 10 и все это время в ней был обычный курсор "cursor for" хотя от него было нужно только пройти по нему один раз в одном направлении (самое распространенное и элементарное использование) , только сегодня я поставил "cursor local fast_forward for". Надеюсь одно это уже должно улучшить ситуацию. И сейчас думаю как лучше дальше поступить? Сохранять запрос который сейчас идет в курсор в таблицу-переменную и создавать курсор только когда в ней больше чем одна запись, а если одна запись то делать все те же действия но без курсора? Прекрасно понимаю что курсор всегда вредит производительности, но будет ли выигрыш в данной ситуации? Создание таблицы-переменной специально для этого, это ведь мизер и не должно тут ухудшить производительность. Окончательный ответ может дать только непосредственная проверка, но с этим к сожалению не просто, ибо процедура эта работает вместе с множеством других сложных и довольно тормознутых операций и она меняет данные к тому же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 22:34 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Да забыл сказать. Использую Delphi 2010 и компоненты доступа к MSSQL - SDAC 6.11.23 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 22:37 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Все состояния предмета (остаток,резерв,приход и т.д.) следует хранить в одной таблице. Я сделал именно так и никаких проблем оптимизации по нескольким таблицам не возникает. БД с указанной таблицей в составе системы торговли работает уже более 15 лет в сотнях мест... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 22:50 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilovМы проходим по этому курсору и делаем UPDATE или DELETE записям ID которых нам дает этот курсор.Зачем делать медленный цикл? Почему не написать это одним запросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 23:48 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Обычно, количество товара определяется на любую дату как Ближайшая Инвентаризация + Приход (от Инвентаризации до нужной даты) - Расход (от инвентаризации до нужной даты). Итого намечается ТРИ таблички, в которых не нужно ничего пересчитывать и удалять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 08:01 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Все это было определено за лет 7 до меня или ещё раньше. Ни времени, ни желания, ни полномочий то менять у меня нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 09:00 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilovВсе это было определено за лет 7 до меня или ещё раньше. Ни времени, ни желания, ни полномочий то менять у меня нет. Структура БД неверная. Кто накосячил, пусть тот и исправляет. Если нет полномочий менять структуру, тогда бесполезно возиться с оптимизацией. Безногому костыли уже не помогут... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 09:16 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
miksoft, Вы считаете что в моем случае курсор вида Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. возможно и имеет смысл (с учетом той статистики о которой я написал вначале) переделать как запрос? Как-то с использованием последних современных оконных функций типа Код: sql 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 09:19 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Резервирование - это ЧЕТВЁРТАЯ табличка, которая появляется в цепочке Количество на Дату = Ближайшая Инвентаризация + Приход - Расход - Резерв И ничего пересчитывать не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 09:31 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Курсор вполне оптимальный, ИМХО. По каким полям есть индексы и какие ? Статистики обновляете ? Как вариант - рассмотреть возможность вызывать процедуру как-нибудь реже или в отложенном режиме. Таблица-переменная не поможет. Даже ухудшит ситуацию. Структура БД неверная. Кто накосячил, пусть тот и исправляет.Отличный совет. Но дартаньянский... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 09:41 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilov, merge используй избавься от курсоров. А вообще текст скрипта таблиц с индексами, текст процедуры T-SQL и план запроса в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 09:42 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
d7ibilovВсе это было определено за лет 7 до меня или ещё раньше. Ни времени, ни желания, ни полномочий то менять у меня нет. Структура БД неверная. Кто накосячил, пусть тот и исправляет. Если нет полномочий менять структуру, тогда бесполезно возиться с оптимизацией. Безногому костыли уже не помогут... Ога, все сломать и написать заново - так победим (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 09:43 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
d7i, Я обязательно об этом заявлю после того как уволюсь и получу расчет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 12:53 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Дед-Папыхтет, Таблица резервов (меньшая из двух) у меня такая Код: 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. Проблемы в ней видно сразу. По логике ни одно из полей не должно быть NULL никогда, а они имеют такую возможность. Наверное это тоже вредит чуть чуть. Надо будет на работе вопрос поднять. Можно было бы и текст процедуры выложить, но он здоровый довольно, только логику вопроса затуманит. А курсор с которым сражаюсь я выкладывал, можно найти по "set @Delta =@K_Res-@K_Ost" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2018, 22:39 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilov, А ты можешь словами сформировать задачу? В 1-2 абзаца ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 08:26 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Дед-Папыхтетbilov, А ты можешь словами сформировать задачу? В 1-2 абзаца Желательно сразу что бы было понятно что такое @K_Res, @K_Ost. Ну и Количество меньше дельта или больше дельта в коде виден апдейт делит, а вот смысл этого не ясен. Я к тому когда смысл понятен, можно эффективнее найти решение, а не подбивать существующий код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 08:30 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Курсор сам по себе очень медленный функционал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 09:21 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
эндиКурсор сам по себе очень медленный функционал.Но иногда сильно выручает. Н-р организовать привязку партий по ФИФО курсором выходит эффективнее, чем запросами. По моему опыту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 09:28 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilov, и результат запроса плиз print @@version ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 10:01 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Дед-Папыхтет, Тут в этом всем хозяйстве смысл длиною в жизнь. Мня забанят сразу если я значительную часть этой портянки тут выложу. На данный момент решаю часть задачи связанную с этим курсором. Думаю поставить проверку типа такого Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. может что-то другое, более щадящее поставить? например так Код: sql 1. 2. 3. , а потом к @tbD обращаться, но тут говорят многие что таблица-переменная это плохо. И вообще имеет ли смысл это делать учитывая " Rezerved (7000записей)." И для данного курсора справедливо "Количество записей всегда >0, но практически в 99.999999% случаях очень мало, < 5. В среднем где-то 80% только 1 запись. Мы проходим по этому курсору и делаем UPDATE или DELETE записям ID которых нам дает этот курсор" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 10:24 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Дед-Папыхтет, print @@version Microsoft SQL Server 2012 - 11.0.2100.60 (X64) Feb 10 2012 19:39:15 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 10:27 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
У меня одного возник вопрос "а Delphi тут при чём"? Кроме этого bilovИспользую Delphi 2010 и компоненты доступа к MSSQL - SDAC 6.11.23 нет ничего, относящегося к этому разделу форума. Может, лучше перенести в раздел по MSSQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 11:01 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
goldmi45У меня одного возник вопрос "а Delphi тут при чём"? Кроме этого bilovИспользую Delphi 2010 и компоненты доступа к MSSQL - SDAC 6.11.23 нет ничего, относящегося к этому разделу форума. Может, лучше перенести в раздел по MSSQL?пожалуй +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 11:13 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilov, Я попытался воспроизвести на случайных данных Код: 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. у меня чота сколько не пробовал выходит на апдейт списывает дельту и дельта обнуляется цикл заканчивается. Я в упор не понимаю пока что ты хочешь сделать в итоге. Или данные приведи какие то инсерт в таблицу в этот скрипт дополни что бы разные вариации изменений удалений были. Или как то поясни что делать то должен этот курсор? PS: а зачем в сортировке - order by RecID DESC, D_Reg DESC, N_Reg DESC указаны D_Reg, N_Reg? у тебя сортировка стоит изначально по уникальному RecID, внутри уникальных строк сортировки не будет никакой - это на работу не влияет, но настораживает смысл этого кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 12:34 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Как можно оптимизировать кусок кода, если МЫ не понимаем что он делает ??? Объясняй смысл кода !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 13:35 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
DimaBr, "D_Reg DESC, N_Reg DESC" Да, да я это тоже сегодня заметил. Это из темного прошлого наверное. Уберем конечно же :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 17:08 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
DimaBrКак можно оптимизировать кусок кода, если МЫ не понимаем что он делает ??? Объясняй смысл кода !!! Начало этой хп такое Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 17:15 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Саму процедуру прислал во вложении. Да наверное лучше было бы на форум MSSQL отправить тему. Но и по Delphi скорее всего есть вопросы. Хранимая процедура вызывается компонентом SDAC Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. и объекты параметры у нее не определены. Один компонент для всех процедур. И как показывает профайлер каждый раз выполняется запрос Код: sql 1. . Читаются и создаются объекты -параметры хранимой процедуры. А а они всегда одни и теже по названию и типу. Наверное если брать типа такого Код: pascal 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. , то будет лучше ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 20:21 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Объясни словами, что делает код??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 21:26 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
DimaBr, если бы он сам знал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 22:09 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Тогда это не лечится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 22:11 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
DimaBr, Корректирует резервы в соответствии с остатками, чаще всего после того как остатки изменила накладная. Накладная изменяет остатки в той же транзакции но до вызова этой хп. Резервы корректируются так чтобы обеспечивать правило Остатки = Резервы + "То что требуется заказам на расход, но нет в наличии (у нас называют условно "неудовлетворенный спрос") " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 22:11 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
И каждая 1 или несколько записей резервов связаны с одним заказом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2018, 22:15 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Резерв - это фактически отгруженная накладная, её нельзя корректировать. Если что-то зарезервировано, то считай что этого на складе уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 00:07 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
DimaBr, У нас резерв это часть остатка. Накладная списывает остаток сразу. Хорошо ли это или плохо, правильно или нет обсуждать особого смысла сейчас нет. Оно так было, есть и будет, со мной или без меня. А по улучшениям быстродействия есть ли какие-нибудь мысли куда копать? И со стороны MSSQL или Delphi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 08:22 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilovДед-Папыхтет, Таблица резервов (меньшая из двух) у меня такая Код: 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. Проблемы в ней видно сразу. По логике ни одно из полей не должно быть NULL никогда, а они имеют такую возможность. Наверное это тоже вредит чуть чуть. Надо будет на работе вопрос поднять. Можно было бы и текст процедуры выложить, но он здоровый довольно, только логику вопроса затуманит. А курсор с которым сражаюсь я выкладывал, можно найти по "set @Delta =@K_Res-@K_Ost" Подскажи еще по индексу CREATE NONCLUSTERED INDEX [Ind_C_Tov_C_Obj] ON [dbo].[Reserveds]. Это индекс на другую таблицу Reserveds, в то время как ты объявляешь в скрипте таблицу без буквы s в конце? Или это просто опечатка твоя? Пока полагаю все таки таблица Reserved - опечатка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 11:12 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Дед-Папыхтет, Да опечатка, пардон. Таблицы Reserved - резервы, OstN - остатки. У нас переименовывали зачем-то давно, Reserveds - это синоним. Уберу потом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 11:26 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Ещё раз извиняюсь. Будем считать " Таблицы Reserved - резервы, OstN - остатки" в реальности чуть-чуть по-другому называются и каждый раз реплайсю (параноя небольшая :) . С синонимом я сейчас соврал откровенно, ведь индекс нельзя создать для синонима. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 11:38 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilov, Еще, что за таблицы SchN_, SchD_, SchLink - очевидно какие то счета и связь с ними? Опишите их назначение и структуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 13:33 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilov, И что такое @T_N входной параметр? Какие значения он может принимать и что они означают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 14:16 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Дед-Папыхтет, SchN_, SchD_ - соответственно заголовки и содержимое заказов (таблицы с громаднейшим числом сток), SchLink - ерунда - не смотрите. "@T_N входной параметр" пока вообще мертвый и потом для SchLink будет нужен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 11:38 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
таблицы_заказов Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 13:10 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Никакой таблицы остатков быть не может. Остатки вещь виртуальная, вчера были одни остатки, сегодня другие завтра третьи. В вашей концепции нельзя узнать количество остатков в определённый промежуток времени, нельзя ввести новую накладную "задним числом", потому что неизвестно сколько остатка было на то число. Архитектура неверная. Повторяю, Остаток на Дату = Ближайшая Инвентаризация + Приход - Расход - Резерв И не нужно ничего пересчитывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 18:32 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Судя по исчерпывающе-информативным именам полей в таблицах (типа T_D), а также учитывая, что структура БД скорее всего неверная (о чем я уже писал), пытатся что-либо там "оптимизировать" равнозначно копанию в отходах жизнедеятельности (извините за резкость). Бросьте, как я уже выше советовал. Работает кое-как, пусть себе работает, пока не рухнуло... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 19:13 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
Понятно. А можете посоветовать тогда какой-нибудь материал (книги, ресурсы) именно по планированию, архитектуре серьёзной учетно-складской системы. В данном вопросе это конечно же бесполезно, но в общем на будущее анализировать все это хоть сколько-нибудь общепринятой научной точки зрения было бы хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 22:37 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilov, сильно сомневаюсь что в интернете удасться найти что-то подобное. Никто такое не публикует. Все, что могу предложить - схема изменения состояния предмета http://polaris.ho.ua/help/sisp.htm Может, натолкнет на правильные мысли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 23:05 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
d7i, Спасибо надеюсь что-нибудь почерпнем. Жаль где и как эта вещь работает не узнать. Под названием "Поларис" масса систем и компаний разных от ракет до мультиварок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 09:14 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
bilov, напишите свои вопросы на update.polaris@ukr.net, я вам всё разъясню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 10:42 |
|
||
|
Тонкости оптимизации для небольшой но очень часто используемой хранимой процедуры MSSQL
|
|||
|---|---|---|---|
|
#18+
А запуск хранимой процедуры через специальный компонент SDAC (н/р Код: pascal 1. ) это в большинстве случаев лучше для производительности чем запуск её в компоненте (TMSQuery) в скрипте вида "exec spMySmallProc @Param1=... " ? Какие-то планы выполнения запросов настраиваются, запоминаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 22:51 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2040969]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 305ms |

| 0 / 0 |
