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

ВНИМАНИЕ! РЕКЛАМНЫЕ СООБЩЕНИЯ И ГИПЕРССЫЛКИ В ФОРУМЕ ЗАПРЕЩЕНЫ (посты удаляются автоматически часто с пользователем)
Текущее время: 28.10.2024 17:11

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 25.10.2017 20:30 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
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 КБ | Просмотров: 24043 ]
Profiler.jpg
Profiler.jpg [ 522.79 КБ | Просмотров: 24043 ]
SumAmount.jpg
SumAmount.jpg [ 124.01 КБ | Просмотров: 24043 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26.10.2017 02:15 
Не в сети

Зарегистрирован: 06.10.2014 18:30
Сообщения: 279
Откуда: Орел
Как восстановить быстродействие понятно.
Вернул LEFT OUTER JOIN dbo.qdfMainSumAmount ON dbo.tblMain.ID = dbo.qdfMainSumAmount.ID в представление.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14.04.2018 18:42 
Не в сети
Администратор

Зарегистрирован: 15.02.2006 20:16
Сообщения: 3690
Откуда: Санкт-Петербург
Надо снять кино, где все подробно показать, рассказать, показывая в процессе.
И затем обратиться к нам в поддержку с копией БД и видео файлом.

_________________
2B OR NOT 2B = TRUE


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB