OFFSET FETCH пример применения в TSQL

Фильтр OFFSET FETCH в языке TSQL интересен тем что в отличии от фильтра TOP позволяет пропускать заданное количество строк ROWS.

Пример:
select regioncode, aolevel, offname from s_adr_fias
order by regioncode, aolevel, offname
offset 100 rows fetch next 50 rows only;


Данный пример демонстрирует выборку из набора отсортированного по условию ORDER BY (по полям regioncode, aolevel, offname) 50 строк данных пропустив первые 100 строк.

!!! Сначала выполняется именно сортировка, и только затем, из отсортированного набора данных берётся необходимый диапазон.

P.S. На больших объёмах, даже с учетом самой оптимальной индексации, данный фильтр является довольно ресурсоемким.

Чистка логов базы данных MSSQL

Вообще процесс чистки логов должен проходить планово, и следить за этим и настраивать должен профессиональный админ. Однако бывает так что на вашем казалось бы небольшом девелоперском проекте для тестов логи неожиданно превысили установленный размер и возникла следующая проблема:

Сама проблема:
The transaction log for database 'база_данных' is full due to 'LOG_BACKUP'. 

Проблему разумеется надо решать.

И вот как это делается:

Для обрезки лога используется вот эта команда:
DBCC SHRINKFILE(база_данных_log, 100);

При выполнении этой команды, LOG файл будет обрезан до 100 мегабайт.

Смотреть дальше

Удаление временных таблиц в MSSQL

Иногда возникает необходимость, в ходе работы процедуры, удалить временно созданную таблицу которая может быть либо создана либо нет, тогда не достаточно просто написать например drop table #myTempTable — потому что в случае если таблицы не существует то запрос не выполнится и выдаст ошибку. Пример ниже показывает как правильно удалять временные таблицы в таком случае:
if exists (
	select * from tempdb.dbo.sysobjects o
	where o.xtype in ('U') 

	and o.id = object_id(N'tempdb..#myTempTable')
)
BEGIN
  DROP TABLE #myTempTable; 
END

Примеры процедур, для минимизации кода при работе с БД в Delphi.

Волею судеб вновь столкнулся с разработкой на Delphi, с тех пор когда занимался этим будучи студентом, прошло много времени и в Delphi особо ничего не изменилось, а вот у меня несколько сменились представления о разработке и о том как правильно должен выглядеть код.

Теперь о том, как я делал давным давно и как (к моему удивлению) многие программисты делают до сих пор.

Ох уж эти базы данных, чего может быть проще, кинул на форму DBGrid, Connection, Query или Table, DataSource, связал всё это хозяйство и работает — Красота!.. Только если этих таблиц много и выборки очень разнообразны (даже в случае когда мы всё вынесем на отдельную формочку) получится жуть в которой очень легко запутаться и это только на форме, в то что творится внутри кода и заглядывать страшно — бардак.

Да и в любом случае, надо вам скажем выполнить один единственный запрос в коде, и поехало собирание Query с кучей строчек кода.

Читать дальше →