Программы "Простой софт" www.prostoysoft.ru
http://prostoysoft.ru/phpBB3/

Торможение программы после изменения представления
http://prostoysoft.ru/phpBB3/viewtopic.php?f=10&t=59051
Страница 1 из 1

Автор:  Uspenskiy [ 25.10.2017 20:30 ]
Заголовок сообщения:  Торможение программы после изменения представления

SQL, версия 2.528 и 2.701
Было работающее представление "Пациенты"
SELECT
dbo.tblMain.ID, dbo.tblMain.Patient, dbo.tblMain.Sex, dbo.tblMain.BirthDate, dbo.tblMain.Address, dbo.tblMain.City,
dbo.tblMain.Phone, dbo.tblMain.DokumentNumber, dbo.tblMain.DokumentName, dbo.tblMain.DokumentDepartament,
dbo.tblMain.PolisOms, dbo.tblMain.Certify, dbo.tblMain.Notes, dbo.tblMain.AddTime, dbo.tblMain.DokumentDate,
dbo.tblMain.SNILS, dbo.tblMain.House, FLOOR((CONVERT(INT, GETDATE()) - CONVERT(INT, dbo.tblMain.BirthDate)) / 365) AS AgeNowCalc,
dbo.qdfMainSumAmount.SumAmount AS SumAmountCalc, dbo.tblMain.Veteran, dbo.tblMain.EMailSend, dbo.tblMain.Reklama,
dbo.tblMain.TipPolis, dbo.tblOMSPolisType.DOCNAME AS PolisCalc, dbo.tblMain.OMSsmocod, dbo.tblOMSSMO.nam_smok AS SMOnamSmokCalc,
dbo.tblMain.Massa
FROM dbo.tblMain
LEFT OUTER JOIN dbo.qdfMainSumAmount ON dbo.tblMain.ID = dbo.qdfMainSumAmount.ID
LEFT OUTER JOIN dbo.tblOMSPolisType ON dbo.tblMain.TipPolis = dbo.tblOMSPolisType.IDDoc
LEFT OUTER JOIN dbo.tblOMSSMO ON dbo.tblMain.OMSsmocod = dbo.tblOMSSMO.smocod

За ненадобностью в среде SQL Management Studio в проекте было убрано поле dbo.qdfMainSumAmount.SumAmount AS SumAmountCalc,
Все хорошо.

А вот когда затем в проекте было убрано
LEFT OUTER JOIN dbo.qdfMainSumAmount ON dbo.tblMain.ID = dbo.qdfMainSumAmount.ID
Программа стала тормозить. Добавление пациента вместо 2 с стало занимать приблизительно 12 с. Ну и в другие моменты торможение наблюдается.

Удаление поля из программы невозможно из-за ошибки (см. SumAmountDeleteMessage.jpg)
Наблюдение профилером см. Profiler.jpg. Левый лог до удаления JOIN, правый -после.
Лог показан в момент после нажатия ОК при добавлении записи в таблицу Пациенты.

qdfMainSumAmount определено так:
SELECT dbo.tblMain.ID, SUM(dbo.tblSurveys.PriceFact) AS SumAmount
FROM dbo.tblMain INNER JOIN dbo.tblSurveys ON dbo.tblSurveys.PatientID = dbo.tblMain.ID
GROUP BY dbo.tblMain.ID

Вопрос:
Как восстановить быстродействие?

Вложения:
SumAmountDeleteMessage.jpg
SumAmountDeleteMessage.jpg [ 105.97 КБ | Просмотров: 6138 ]
Profiler.jpg
Profiler.jpg [ 522.79 КБ | Просмотров: 6138 ]
SumAmount.jpg
SumAmount.jpg [ 124.01 КБ | Просмотров: 6138 ]

Автор:  Uspenskiy [ 26.10.2017 02:15 ]
Заголовок сообщения:  Re: Торможение программы после изменения представления

Как восстановить быстродействие понятно.
Вернул LEFT OUTER JOIN dbo.qdfMainSumAmount ON dbo.tblMain.ID = dbo.qdfMainSumAmount.ID в представление.

1. Как все таки удалить его, сохранив быстродействие?
2. Как не удалить какую-нибудь связь не потеряв быстродействия?
Хорошо что этот случай стал заметен и причина найдена.
Есть у меня место где база еще маленькая. Эффект проявится позже?
А может есть и ещё подобные вещи в базе?

Автор:  Ivan [ 14.04.2018 18:42 ]
Заголовок сообщения:  Re: Торможение программы после изменения представления

Надо снять кино, где все подробно показать, рассказать, показывая в процессе.
И затем обратиться к нам в поддержку с копией БД и видео файлом.

Страница 1 из 1 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/