Время прочтения: 2 мин.

В каждом деле важны стремление к цели и практика. Я всегда хотел обрабатывать данные не только в Excel, а использовать базы данных и, возможно, в будущем освоить SQL, Python, попробовать себя в работе с большими данными. В этой статье хочу показать вам несколько полезных лайфхаков и информационных ресурсов, которые помогли мне сделать первый шаг —  начать писать SQL запросы и за несколько месяцев перестроиться на IT направление.

Есть несколько тонкостей, которые не были очевидны для меня при выгрузке данных с помощью MS SQL. Начнём с самого простого – лучше записывать анализируемые данные в отдельную таблицу, тогда во время анализа данных и доработки скрипта не придётся каждый раз обращаться к основной таблице. Это не только разгрузит систему, но и сократит время работы вашего скрипта, особенно если в таблице огромное количество данных.

CREATE TABLE [SANDBOX].[Pismerov1-IT].[task2030_EMIS](
	[ACCOUNT_NUM] [nvarchar](70) NULL,
	[ORIG_AMT] [money] NULL
)
INSERT INTO [SANDBOX].[Pismerov1-IT].[task2030_EMIS]
SELECT   
		 A.[ACC]
		,A.[SUM]
FROM [Main_Database].[Scheme].[task2030_EMIS] A

Ещё один лайфхак – полезно проверять наличие индексов у таблиц, и, если они есть, вести поиск по индексированным столбцам. Индексы предоставляют собой путь для быстрого поиска данных на основе значений в этих столбцах, их использование позволяет значительно сократить время обработки запроса. Существуют разные виды индексации, почитать об этом будет очень полезно.

CREATE NONCLUSTERED INDEX ACC   
ON [SANDBOX].[Pismerov1-IT].[task2030_EMIS] ([ACC])

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

Наконец, использование курсоров для построчного выведения результатов может оказаться очень эффективным. Без использования этого механизма, если загрузка результата запроса прервется, ни одна строка не сохранится в выдаче и придется начинать все сначала. Применение курсора позволяет выгружать результат запроса построчно и, как следствие, позволит сохранить всё записанное ранее при прерывании загрузки.

В обучении работе в MS SQL мне помогли следующие ресурсы:

  • sql-ex.com – тренировка и закрепление основного синтаксиса SQL, есть много задач именно для начинающих, доступны подсказки и обсуждение на форуме, большим плюсом ресурса является подробный и понятный учебник, описывающий все необходимые операторы;
  • форумы Stackoverflow и Cyberforum, много полезных материалов нашлось на Хабре, Proglib и Tproger;
  • Hackerrank.com  – для тех, кто уже знаком с основами SQL интересными покажутся задачи где можно посоревноваться с другими пользователями и получить высший счёт за безупречное выполнение задания.

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