by Alexey Knyazev
29. января 2012 21:07

- Процедура стала работать медленнее, чем обычно?
- Запрос выполняется быстро, а процедура, в которой подобный запрос, работает очень долго?
- У процедуры неоптимальный план запроса?
Если ответ "Да" хоть на один из вопросов, то эта статья для вас. Я расскажу и покажу, как можно повлиять на работу процедуры и быть уверенным, что в кэше окажется ожидаемый план запроса (а значит никаких больше сюрпризов) для вашей процедуры.
Тема не нова, но если вы это читаете, то моё время потрачено не зря.
[Ещё]
by Alexey Knyazev
2. декабря 2011 20:08

Ещё один вопрос, который регулярно появляется на тематических форумах:
"Как получить максимум из нескольких колонок одной таблицы?".
Любую задачу можно решить несколькими способами, эта не исключение. Я попытался собрать несколько вариантов для решения этого вопроса в этой заметке для разных версий SQL Server.
Кроме того, проведу небольшие замеры производительности всех рассмотренных примеров.
Буду рад, если вы предложите ещё несколько вариантов решения этой задачи и с удовольствием дополню эту статью позже.
[Ещё]
by Alexey Knyazev
1. ноября 2011 20:36

Собственно проблема озвучена в тебе этого поста. Если у вас на рабочей станции при двойном клике по файлам с расширением *.sql загружается новый экземпляр SSMS (SQL Server Management Studio), вместо того, чтобы открыть файл в новой вкладке уже открытой студии, то эта заметка для вас.
[Ещё]
by Alexey Knyazev
20. октября 2011 22:08
by Alexey Knyazev
24. сентября 2011 21:32

Прежде, чем я расскажу о проблемах с которыми вы можете столкнуться при использовании временных таблиц, немного теории.
Временные таблицы отличаются от постоянных только тем, что хранятся в базе данных
tempdb и автоматически удаляются, когда необходимость в них отпадает.
Существует два вида временных таблиц: локальные и глобальные. Они отличаются друг от друга именами, видимостью и доступностью. Имена локальных временных таблиц начинаются с одного символа (#); они видны только текущему соединению пользователя и удаляются, когда пользователь отключается от экземпляра SQL Server. Имена глобальных таблиц начинаются с двух символов номера (##); они видны любому пользователю и удаляются, когда все пользователи, которые на них ссылаются, отключаются от экземпляра SQL Server.
Например, если создать таблицу employees, она будет доступна любому пользователю, которому предоставлены разрешения на ее использование до тех пор, пока не будет удалена. Если во время сеанса базы данных создается локальная временная таблица
#employees, с ней сможет работать только данный сеанс. Таблица будет удалена при завершении сеанса. Если создать глобальную временную таблицу
##employees, с ней сможет работать любой пользователь базы данных. Если другие пользователи не будут работать с этой таблицей, она будет удалена после отключения от нее. Если другой пользователь обратится к созданной таблице, SQL Server удалит ее, когда произойдет отключение и другие сеансы перестанут активно к ней обращаться.
[Ещё]