Производительность запросов. Взять запрос и заставить его выполняться быстрей, чем прежде, или потреблять меньше ресурсов - достаточная мотивация. В большинстве случаев улучшения производительности можно достичь добавлением индекса к столбцам, используемым в предикате запроса. Направление дает либо предложение WHERE, либо ORDER BY, или даже просто столбцы в предложении SELECT. Если вы новичок в SQL Server с его различными типами имеющихся индексов, бывает трудно решить, какой из них лучше всего подошел бы в вашем конкретном случае. Здесь мы пройдемся по всем типам доступных индексов, чтобы дать вам обзор, а также совет относительно применения того или иного индекса в конкретном случае использования. Continue reading "Типы индексов SQL Server"
Работая с базами данных SQL, мы часто пишем запросы, не задумываясь о том, как запрос собирается читать данные из соответствующих таблиц. Как мы знаем, базы данных проектируются в соответствии с базовыми свойствами ACID (атомарность, согласованность, изоляция, длительность), и каждое свойство изоляции гарантирует корректную целостность в рамках транзакции, выполняемой в сеансе. Проще говоря, это означает, что когда транзакция выполняется, ядро считает, что она является единственной транзакцией в сеансе. Это свойство базы данных помогает поддерживать согласованность системы, а также является важным фактором чтения данных из источника при одновременном выполнении множества транзакций в том же и других сеансах. Continue reading "Уровни изоляции транзакций"
При обработке сложных операторов insert, update и delete часто полезно знать, что изменилось - для аудита или чтобы вернуть значение в вызывающее приложение (например, ID или другое значение после вставки). Предложение OUTPUT в T-SQL позволяет вам сделать именно это, что действительно очень просто. Я покажу вам как! Continue reading "Использование предложения OUTPUT (для операторов Insert и Delete)"
§ Под номером 306 выставлен для обсуждения очередной кандидат на обучающий этап (сложность 1 балл). Прежняя задача 306 перенесена на обучающий этап под номером 150.
Если ответить коротко, то оптимизатор запросов будет рассматривать запрос, определенный в хранимой процедуре точно также, как и непосредственно переданный.
С одной стороны, это хорошо: это означает, что SQL Server кэширует и повторно использует планы запросов, чтобы заставить их выполняться быстрее.
Parameter sniffing (прослушивание параметров) только тогда становится проблемой, когда кэшированный план далек от оптимального плана для заданных входных параметров.
В MySQL 8.0.18 появилась новая функция, которая называется Hash Join, и я захотел посмотреть, как она работает, и в каких ситуациях она может нам помочь.
В общих чертах операция состоит в следующем: при выполнении соединения в памяти создается хеш-таблица на базе одной из соединяемых таблиц, другая таблица читается построчно, вычисляется хеш и выполняется поиск по этому хеш-ключу в хеш-таблице, находящейся в памяти.
Continue reading "Понимание хеш соединений в MySQL 8"