Это просто запрос, но не обязательно для публикации
M( "Cost_Fact3". "CostAmount" ) AS "C8" FROM "PalsDW". "dbo". "Cost_Fact" "Cost_Fact3" WHERE "Cost_Fact3". "CurrencySID" =3 GROUP BY "Cost_Fact3". "PlanningResourceCenterSID", "Cost_Fact3". "JDEAccountSID", "Cost_Fact3". "CarrierGroupSID", "Cost_Fact3". "CurrencySID", "Cost_Fact3". "CalendarMonthSID", "Cost_Fact3". "CalendarYear", CASE "Cost_Fact3". "CalendarMonthSID" WHEN 1 THEN '01' WHEN 2 THEN '02' WHEN 3 THEN '03' WHEN 4 THEN '04' WHEN 5 THEN '05' WHEN 6 THEN '06' WHEN 7 THEN '07' WHEN 8 THEN '08' WHEN 9 THEN '09' WHEN 10 THEN '10' WHEN 11 THEN '11' WHEN 12 THEN '12' END , LTRIM( RTRIM( CONVERT( CHAR, "Cost_Fact3". "CalendarYear" ) ) ) + LTRIM( RTRIM( CASE "Cost_Fact3". "CalendarMonthSID" WHEN 1 THEN '01' W THEN '07' WHEN 8 THEN '08' WHEN 9 THEN '09' WHEN 10 THEN '10' WHEN 11 THEN '11' WHEN 12 THEN '12' END ) ) ) "T0"
Что я уже пробовал:
можем ли мы улучшить производительность этого запроса без использования индекса? у меня нет разрешения на его создание
0x01AA
Первая идея: удалите свой случай blabla, чтобы преобразовать число в строку. Тогда SQL становится, скорее всего, также более приятным для чтения. В нынешнем виде мне не нравится даже смотреть на него, чтобы понять, что он должен делать ;)
ZurdoDev
Прекратите все эти безумные "когда". Google как получить 2-значный номер.
ZurdoDev
Но нет, мы не можем сказать вам, как сделать это быстрее, потому что мы не видим ничего важного.
Michael_Davies
Какие тайминги вы получаете в данный момент и на сколько записей?
Одна вещь, которую вы могли бы рассмотреть, - это создать временную таблицу или представление для вложенного выбора, а затем применить к нему основной выбор и посмотреть, как сравниваются тайминги.
PIEBALDconsult
Избегайте манипуляций со строками в SQL - это должно быть сделано в другом месте.
Посмотрите в функцию форматирования
https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql
Вам не только не должно быть разрешено создавать индекс, но, вероятно, вам не должно быть разрешено писать код.