Published on

August 26, 2014

Концепции SQL Server: Слева или справа?

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

Давайте рассмотрим простой пример:

SELECT  a.AddressID,
        a.AddressLine1,
        AddressLine2
FROM    Person.Address AS a
WHERE   a.AddressLine1 = 'Downshire Way';

В этом запросе мы выбираем записи из таблицы “Person.Address”, где столбец “AddressLine1” равен ‘Downshire Way’. План выполнения для этого запроса простой.

Теперь предположим, что мы хотим изменить запрос, чтобы искать все результаты, содержащие ‘Way’. Мы можем сделать это, используя функцию RIGHT:

SELECT  a.AddressID,
        a.AddressLine1,
        AddressLine2
FROM    Person.Address AS a
WHERE   RIGHT(a.AddressLine1, 3) = 'Way';

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

С другой стороны, если мы изменяем запрос так, чтобы функция находилась справа от знака равенства:

SELECT  a.AddressID,
        a.AddressLine1,
        AddressLine2
FROM    Person.Address AS a
WHERE   'Way' = RIGHT(a.AddressLine1, 3);

Хотя функция теперь находится справа, план выполнения все равно не является идеальным. Это связано с проблемой наличия функции в самом столбце, а не с ее расположением.

Важно понимать, что влияние производительности функции в запросе зависит от различных факторов, таких как сложность функции и размер обрабатываемых данных. В некоторых случаях переписывание запроса или использование альтернативных техник, например, использование команды LIKE, может улучшить производительность.

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

Для получения более подробной информации о настройке запросов и оптимизации производительности рекомендуется посетить наш предстоящий полноценный семинар на Connections в Лас-Вегасе или наш полноценный предсеминар на PASS Summit в Сиэтле. Зарегистрируйтесь сейчас, чтобы забронировать свое место!

Спасибо за чтение!

С наилучшими пожеланиями,

Ваше Имя

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.