Member 10103170 Ответов: 2

Сделайте SQL-запрос более эффективным


У меня есть база данных с 6 полями, 2 из которых предназначены для десятичной высоты и ширины, а остальные 4 - для имперской высоты и ширины (футы и дюймы). Пользователи заполняют нужные поля. Когда я сообщаю/показываю на экране, у меня есть прикрепленный код для аккуратного отображения, но я не уверен, что он эффективен. Любые указания будут с радостью приняты. Спасибо!

Что я уже пробовал:

replace(case dbo.Data.DataType when 'Imperial' then
                                    case CAST(dbo.Data.Feet  AS varchar) + 'Ft ' when '0Ft ' then '' else CAST(dbo.Data.Feet  AS varchar) + 'Ft ' end 
                                    + case CAST(dbo.Data.Inches AS varchar) + 'Ins x ' when '0.00Ins x ' then ' x ' else CAST(dbo.Data.Inches AS varchar) + 'Ins x ' end +
                                    case CAST(dbo.Data.FeetH  AS varchar) + 'Ft ' when '0Ft ' then '' else CAST(dbo.Data.FeetH  AS varchar) + 'Ft '  end 
                                    + case CAST(dbo.Data.InchesH AS varchar) + 'Ins' when '0.00Ins' then '' else CAST(dbo.Data.InchesH AS varchar) + 'Ins' end
                                    else
                                    LTRIM(ISNULL(CAST(ROUND(dbo.Data.SizeW, 2) AS varchar), '')) + ' x ' + LTRIM(ISNULL(CAST(ROUND(dbo.Data.SizeH, 2) AS varchar), '')) + ' ' + dbo.Data.Unit 
                                    end, '.00','') AS Size

2 Ответов

Рейтинг:
2

MadMyche

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


Рейтинг:
0

RickZeeland

Может быть, эти ответы будут полезны: эффективность SQL-запроса[^]