Мне недавно пришлось перенести свою базу данных из SQL Studio в Oracle, и я узнаю обо всех различных синтаксисах, которые необходимо использовать.
В любом случае, сегодня я столкнулся с проблемой, когда запрос, который я пытаюсь выполнить, выполняется вечно (> 15 минут) и, кажется, никогда не завершается.
Как видите, я использую оператор With, чтобы создать 2 темп. таблицы, из которых я запускаю свой запрос. Если я запрашиваю одну из этих таблиц по отдельности, я получаю результаты менее чем за 2 секунды. Как только я добавляю другую таблицу в оператор From, она, похоже, ничего не делает.
Этот запрос работает нормально:
With Laser as
(
SELECT Data.Serial_Number, Equipment.Equipment_Desc, Data.SCAN_TIME,
ROW_NUMBER() OVER (PARTITION BY Data.Serial_Number, Equipment.Equipment_SN
ORDER BY Equipment.Equipment_SN) AS RN
FROM Data, Equipment
where Data.Equipment_Station = Equipment.Equipment_SN and Equipment.Equipment_Desc like '%laser Etch%'
)
,AssyQC AS
(
SELECT Data.Serial_Number, Equipment.Equipment_Desc,Data.SCAN_TIME,
ROW_NUMBER() OVER (PARTITION BY Data.Serial_Number, Equipment.Equipment_SN
ORDER BY Equipment.Equipment_SN) AS RN
FROM Data, Equipment
where Data.Equipment_Station = Equipment.Equipment_SN and Equipment.Equipment_Desc like '%QSMC SI%'
)
select to_char(Laser.SCAN_TIME, 'mm') as "Laser Month", to_char(Laser.SCAN_TIME, 'dd') as "Laser Day"
from Laser
;
Теперь, если я добавлю другую таблицу в оператор From, хотя я не использую ее где-либо еще (выберите, где и т. Д.), Запрос ничего не сделает. Он бежит и бежит и бежит ...
With Laser as
(
SELECT Data.Serial_Number, Equipment.Equipment_Desc, Data.SCAN_TIME,
ROW_NUMBER() OVER (PARTITION BY Data.Serial_Number, Equipment.Equipment_SN
ORDER BY Equipment.Equipment_SN) AS RN
FROM Data, Equipment
where Data.Equipment_Station = Equipment.Equipment_SN and Equipment.Equipment_Desc like '%laser Etch%'
)
,AssyQC AS
(
SELECT Data.Serial_Number, Equipment.Equipment_Desc,Data.SCAN_TIME,
ROW_NUMBER() OVER (PARTITION BY Data.Serial_Number, Equipment.Equipment_SN
ORDER BY Equipment.Equipment_SN) AS RN
FROM Data, Equipment
where Data.Equipment_Station = Equipment.Equipment_SN and Equipment.Equipment_Desc like '%QSMC SI%'
)
select to_char(Laser.SCAN_TIME, 'mm') as "Laser Month", to_char(Laser.SCAN_TIME, 'dd') as "Laser Day"
from Laser, AssyQC
;
Этот запрос прекрасно работал в SQL Studio.
Есть идеи ??